2
예 사이에 새 열 = 차이 : D 자이 두 목록 사이의 차이를 (할당됩니다dplyr ::의 mutate : - 작품이 쉼표로 구분 된 목록 열
df <- data.frame(c0=c(1, 2), c1=c("A,B,C", "D,E,F"), c2=c("B,C", "D,E"))
df
# c0 c1 c2
# 1 1 A,B,C B,C
# 2 2 D,E,F D,E
# Add a column d with difference between c1 and c2
df %>% mutate(d=setdiff(unlist(strsplit(as.character(c1), ",")), unlist(strsplit(as.character(c2), ","))))
# c0 c1 c2 d
# 1 1 A,B,C B,C A
# 2 2 D,E,F D,E F
나는 위의 기대 것을 얻을 그들은 이미 분류되어있다). 내가 하나 개 이상의 다른 문자를 소개하면
그러나, 그것은 더 이상 작동하지 않습니다 :
df <- data.frame(c0=c(1, 2), c1=c("A,B,C", "D,E,F,G"), c2=c("B,C", "D,E"))
df
# c0 c1 c2
# 1 1 A,B,C B,C
# 2 2 D,E,F,G D,E
# Add a column d with difference between c1 and c2
df %>% mutate(d=setdiff(unlist(strsplit(as.character(c1), ",")), unlist(strsplit(as.character(c2), ","))))
Error: wrong result size (3), expected 2 or 1
이 내가 얻고 싶었다 무엇 : 나는 setdiff 주위에 paste()
추가하려고했습니다
c0 c1 c2 d
1 1 A,B,C B,C A
2 2 D,E,F,G D,E F,G
그러나 그것은 도움이되지 않았다. 나는 위의 setdiff으로 잘못하고있는 무슨
c0 c1 c2 d
1 1 A,B,C B,C A
2 2 D,E,F,G D,E F
3 2 D,E,F,G D,E G
: 결국 사실은 아마 같은 새로운 행에 D 열을 분할 tidyr::separate
을 사용할 수 있도록하려면?
감사
팀은 2 행에 당신이 셀에 맞지 않을 수 이상의 요소를 가지고 있기 때문에 당신은 오류가
브릴리언트 - 감사합니다! – Tim
전 행렬을 따라 오지 않았고 전에 불 절한 적이 없습니다. 이해를 확인하려면 : rowwise 후속 요약 및 mutate 작업을 각 행 내에서 수행합니다 (위의 행 붙여 넣기없이 모든 행의 값을 조인 할 때 붙여 넣기를 시도했을 때). unnest는 내가'tidyr :: separate'를 제안한 것을 수행합니다 - d의 각리스트 요소에 대해 행을 복제합니다. 나는이 게시물이 불충분 한 것에 유용하다고 생각했다 : http://bioinfoblog.it/2015/02/the-most-useful-r-command-unnest-from-tidyr/comment-page-1/. Thanks again again @Psidom – Tim
붙여 넣기는 벡터화되어 있기 때문에 실패합니다. 따라서 행 단위로 작업을 제한하는 행 방향이없는 경우 열을 벡터로 처리합니다. 'separate'는 열을 여러 열로 나눌 때 쓰이는 반면,'unnest'는이 경우처럼 각 요소가리스트 인 열을 확장합니다. – Psidom