2016-08-24 6 views
-1

str_split_fixed를 사용하여 첫 번째 열을 6 개로 분할했습니다. 내가 COLNAMES 사용하여 해당 열 이름을 변경하고 싶어 그 후r str_split 다음에 열 제거 및 이름 바꾸기

adobe.placement$name <- str_split_fixed(adobe.placement$name, ":::", 6) 

: 그것은 Source.1 6 열 첫 번째 변경

colnames(adobe.placement) <- c("Source","Keyword","Type","Campaign","Medium","Visits") 

을 Source.2 등 내가 선택은 특정 이름에 이러한 열을 변경할 수 있습니까?

adobe.placement[3] <- NULL 

분할 된 열의 이름을 바꾸고 그 중 하나를 제거하려면 어떻게해야합니까?

EDIT : 입력 데이터 :

name          A B C D E 
2 test:::ok:::test:::ok:::test:::ok:::delete 2 3 4 ok 1900-01-05 
3 test:::ok:::test:::ok:::test:::ok:::delete 2 2 4 ok 1900-01-05 
4 test:::ok:::test:::ok:::test:::ok:::delete 2 2 4 ok 1900-01-05 
5 test:::ok:::test:::ok:::test:::ok:::delete 2 2 4 ok 1900-01-05 
6 test:::ok:::test:::ok:::test:::ok:::delete 2 2 4 ok 1900-01-05 

원하는 출력 : 하나에

adobe.placement$name <- str_split_fixed(adobe.placement$name, ":::", 6) 

가 할당 전체 dataframe (6 열)의 코드

Source Keyword Type Campaign Medium Visits A B C D E 
2 test ok  test ok  test ok  2 3 4 ok 1900-01-05 
3 test ok  test ok  test ok  2 3 4 ok 1900-01-05 
4 test ok  test ok  test ok  2 3 4 ok 1900-01-05 
5 test ok  test ok  test ok  2 3 4 ok 1900-01-05 
6 test ok  test ok  test ok  2 3 4 ok 1900-01-05 
+0

주십시오 샘플 입력 데이터처럼 뭔가를 할 수 있습니다. 'dput'의 결과를 잘라내거나 붙이면됩니다. – steveb

+0

또한 원하는 출력이 무엇인지 분명하게 보이더라도 원하는 출력을 포함하면 도움이됩니다. – steveb

+0

방금 ​​입력 데이터로 내 게시물을 편집했습니다. – TityBoi

답변

0

첫 행 열, 원래 중첩 된 데이터 프레임. 그런 다음 열은 내부 열 이름과 연결된 외부 열 이름의 이름을 "."로 구분하여 지정합니다. 네가 본 것처럼. 이상한 일이 발생했다는 단서는 str(adobe.placement)을 입력하면 data.framedata.frame이 포함되어있는 것을 볼 수 있습니다. 오히려 기존의 열을 내부에 이르렀보다는 dataframe에 여분의 열을 추가

adobe.placement <- cbind(str_split_fixed(adobe.placement$name, ":::", 6),adobe.placement[,-1]) 
names(adobe.placement)[1:6] <- c("Source","Keyword","Type","Campaign","Medium","Visits") 

:

이 솔루션은 같은과 함께이 혼란에 묻지 않게하는 것입니다.

+0

'str_split_fixed'가 "2"값으로 호출되는 이유는 무엇입니까? 나는 뭔가를 놓칠지도 모른다. – steveb

+0

op가 예제 데이터 세트를 제공하기 전에 테스트에서 남겨진 덕분에 @steveb. – Miff

+0

내 답변을 시작할 때 내 메모를 참조하십시오. 내 답변이 너무 유사하다면 (즉, 내 답변을 삭제해야하는 경우) 알 수 없습니다. 완전한 절단/붙여 넣기 솔루션을 제공하려고했습니다. 너무 닮았다면 나는 그것을 지울 것이고 당신의 대답에 내가 가지고있는 어떤 것도 자유롭게 추가 할 것입니다. – steveb

0

참고 :이 답변은 다른 답변과 유사하지만 가능성이 더 높습니다 (즉, 잘라 내기/붙여 넣기시 작동하는 데이터 및 코드 제공). 이 답변이 너무 가깝거나 다른 답변이 더 완전 해지면이 답변을 삭제합니다. 그렇지 않은 경우이 메모를 삭제합니다.

는 다음과 같은

### Input data 
df <- structure(list(name = c("test:::ok:::test:::ok:::test:::ok:::delete", 
"test:::ok:::test:::ok:::test:::ok:::delete", "test:::ok:::test:::ok:::test:::ok:::delete", 
"test:::ok:::test:::ok:::test:::ok:::delete", "test:::ok:::test:::ok:::test:::ok:::delete" 
), A = c(2L, 2L, 2L, 2L, 2L), B = c(3L, 2L, 2L, 2L, 2L), C = c(4L, 
4L, 4L, 4L, 4L), D = c("ok", "ok", "ok", "ok", "ok"), E = c("1900-01-05", 
"1900-01-05", "1900-01-05", "1900-01-05", "1900-01-05")), .Names = c("name", 
"A", "B", "C", "D", "E"), class = "data.frame", row.names = c(NA, 
-5L)) 

new_colnames <- c("Source", "Keyword", "Type", "Campaign", "Medium", "Visits") 
colcnt <- length(new_colnames) 
### Even if 'name' has extra ':::' trailing, the result should be ok. 
newdf <- cbind(str_split_fixed(df$name, ":::", colcnt+1)[,-(colcnt+1)], df[,-1]) 
colnames(newdf)[1:colcnt] <- new_colnames 
newdf 

## Source Keyword Type Campaign Medium Visits A B C D   E 
## 1 test  ok test  ok test  ok 2 3 4 ok 1900-01-05 
## 2 test  ok test  ok test  ok 2 2 4 ok 1900-01-05 
## 3 test  ok test  ok test  ok 2 2 4 ok 1900-01-05 
## 4 test  ok test  ok test  ok 2 2 4 ok 1900-01-05 
## 5 test  ok test  ok test  ok 2 2 4 ok 1900-01-05