从长列到grup列表的data.table
我试图将所有值按组“粘贴”到列表中。类似于粘贴(x,collapse=“-”)的功能,但输出应该是一个列表。我成功地将其分为两个步骤。可以一步完成吗从长列到grup列表的data.table,r,data.table,R,Data.table,我试图将所有值按组“粘贴”到列表中。类似于粘贴(x,collapse=“-”)的功能,但输出应该是一个列表。我成功地将其分为两个步骤。可以一步完成吗 library("data.table") d <- data.table( sample(letters, 100, replace = T), sample(LETTERS,100, replace = T)) %>% unique d[, paste0(V2, collapse = "--"), by=V1] %>
library("data.table")
d <- data.table( sample(letters, 100, replace = T), sample(LETTERS,100, replace = T)) %>% unique
d[, paste0(V2, collapse = "--"), by=V1] %>% head
V1 V1
1: m E--T--L--Q
2: k J--H--W--P--X
3: v D--W--X
4: g H--E--I
5: c K--U--X--H--Y--N
6: l O--H--J--R--U
dd <- split(d, by="V1", keep.by=FALSE)
data.table(names(dd), sapply(dd, "[") ) %>% head
V1 V2
1: m E,T,L,Q
2: k J,H,W,P,X
3: v D,W,X
4: g H,E,I
5: c K,U,X,H,Y,N
6: l O,H,J,R,U
库(“data.table”)
d%唯一
d[,粘贴0(V2,collapse=“--”,by=V1]]>%head
V1
1:Me--T--L--Q
2:kj--H--W--P--X
3:vd--W--X
4:GH--E--I
5:Ck--U--X--H--Y--N
6:LO--H--J--R--U
dd%水头
V1 V2
1:Me,T,L,Q
2:kj,H,W,P,X
3:vd,W,X
4:GH,E,I
5:Ck,U,X,H,Y,N
6:LO,H,J,R,U
我也尝试了shift,但没有成功我们可以将其包装在
列表中
dd <- d[, .(V2 = list(V2)), V1]
head(dd)
# V1 V2
#1: c Z,W,K,G,Q,A
#2: a V,X,T,D,K
#3: w Z,I,N
#4: u N,Y,H,U,M,Z,...
#5: d G,M,D,B
#6: q O,Z,K,V,I,X,...
str(dd)
#Classes ‘data.table’ and 'data.frame': 25 obs. of 2 variables:
# $ V1: chr "c" "a" "w" "u" ...
# $ V2:List of 25
# ..$ : chr "Z" "W" "K" "G" ...
# ..$ : chr "V" "X" "T" "D" ...
# ..$ : chr "Z" "I" "N"
# ..$ : chr "N" "Y" "H" "U" ...
# ..$ : chr "G" "M" "D" "B"
# ..
dd抱歉描述不准确,它应该是一个包含字符串向量的列表,而不是一个包含一个字符串的列表。现在我意识到了为什么在我第一次尝试时它不起作用。最初的意图是通过引用修改表,以便每个条目都有一个列表。在不进行第二步合并的情况下可以实现这一点吗?