我通常喜欢使用整洁的数据,但我使用的是一个包,要求我将数据转换为特定表单的列表。我的数据如下
quantity itemnumber id
<int> <chr> <int>
1 1 u 99732
2 2 a 100229
3 1 c 100229
4 1 x 100229
5 1 s 100229
6 5 r 99732
7 1 e 99732
8 1 i 100229
9 3 y 99732
我需要这样做str(mydata)
如下所示:
List of 2
$ id 99732 : chr [1:10] "u" "r" "r" "r" "r" "r" "e" "y" "y" "y"
$ id 100229 : chr [1:6] "a" "a" "c" "x" "s" "i"
我目前的解决方案是
mydata %>%
group_by(id) %>%
summarise(itemnumber=paste(itemnumber,collapse=''))
但是这并没有让我一路走来。我仍然有一个数据框,并且没有考虑itemnumbers
的复制。
答案 0 :(得分:2)
您可以split
使用id
作为群组,rep
按照quantity
要求使用每个字词。
with(dat, split(rep(itemnumber, quantity), rep(id, quantity)))
dat = read.table(header=TRUE, text=" quantity itemnumber id
1 1 u 99732
2 2 a 100229
3 1 c 100229
4 1 x 100229
5 1 s 100229
6 5 r 99732
7 1 e 99732
8 1 i 100229
9 3 y 99732", stringsAsFactors=FALSE)