在R数据帧中将数据单元转换为长格式的行

时间:2016-05-25 11:13:09

标签: r

我想重塑我的原始数据,并且我已经使用了一段时间来解决此问题,但现在遇到了更复杂数据集的问题。

我的数据看起来像这样

id    gender    rt
1     2         23, 50, 45, 60, 10
2     1         12, 4, 6

我想将其转换为长格式,但遇到了麻烦,因为在这种情况下我有单元格(rt),我想为每个id做长。

以下是我希望它的样子:

id    gender    rt
1     2         23
1     2         50
1     2         45
1     2         60
1     2         10
2     1         12
2     1         4
2     1         6

(这里我对其他数据的新颖复杂性是rt的长度因id}而异。

我尝试使用reshapeldply但是无法做到这一点我想做的事情因为我的长期数据是一个有很多观察而非许多观察的单元格rt单个观察的列。

如何将数据转换为所需格式?

2 个答案:

答案 0 :(得分:1)

l<-strsplit(mydf$rt, split = ",")
data.frame(id = rep(mydf$id, sapply(l, length)),gender= rep(mydf$gender, sapply(l, length)), rt = unlist(l))

答案 1 :(得分:1)

我们可以使用cSplit

轻松完成此操作
library(splitstackshape)
cSplit(df1, 'rt', ', ', 'long')