在R中转换data.frame的命令

Gar*_*ett 4 r dataframe

我正在努力想出一个正确的过程来转换我正在进行分析的一些数据而不需要使用脚本语言.

数据采用类似于以下的格式

data.frame(Group=LETTERS[1:3],Total=c(100,120,130),Modified=c(12,15,32))

  Group Total Modified
1     A   100       12
2     B   120       15
3     C   130       32
Run Code Online (Sandbox Code Playgroud)

我希望结果数据框看起来像

    +-------+----------+
    | Group | Modified |
    +-------+----------+
    | A     | Y        |
    | A     | Y        |
    | A     | Y        |
    | .     | .        |
    | .     | .        |
    | .     | .        |
    | A     | N        |
    | A     | N        |
    | B     | Y        |
    | B     | Y        |
    | .     | .        |
    | .     | .        |
    | .     | .        |
    | B     | N        |
    +-------+----------+
Run Code Online (Sandbox Code Playgroud)

应该有12行,A组和Modified = Y,88行,A组和Modified = N.B,C等也是如此.

在大多数情况下,需要在每行上重复添加其他列以及组信息.

mne*_*nel 10

您可以使用rep适当的 times参数.

data.table编码优雅的解决方案

library(data.table)
# your data is in the data.frame DF
DF <- data.table(DF)
levels <- c('Y', 'N')
DF[,list(Modified = rep(levels,c(Modified,Total-Modified))),by = Group]
Run Code Online (Sandbox Code Playgroud)