【发布时间】:2017-07-05 15:24:29
【问题描述】:
我有以下 R data.table(尽管我很高兴为这个小数据集使用数据框)
library(data.table)
dt = readcsv(...)
head(dt)
column1 column2 column3 column4 column5 column6
1 5 456421 437141 1.044105 32935 893562
2 42 756152 714126 1.058850 45913 1470278
3 36 157817 150205 1.050677 14558 308022
4 20 181700 172716 1.052016 15077 354416
我想将column2 和column3 合并到一列中,保留所有关联的行,并使用二进制标签来跟踪这些值的原始来源。我想到的data.table格式如下:
column1 combined column4 column5 column6 from_column_2
1 5 456421 1.044105 32935 893562 TRUE
2 5 437141 1.044105 32935 893562 FALSE
3 42 756152 1.058850 45913 1470278 TRUE
4 42 714126 1.058850 45913 1470278 FALSE
5 36 157817 1.050677 14558 308022 TRUE
6 36 150205 1.050677 14558 308022 FALSE
....
我很困惑如何使用 data.table 做到这一点。大多数操作都是“表范围的”。至于使用dplyr 或tidyr,我不确定我是如何过滤任何东西的......
【问题讨论】:
-
你试过
?melt即melt(dt, measure.vars = c("column2", "column3")) -
tidyr解决方案将是df <- gather(df, key = source.column, value = combined, column2, column3) -
@docendodiscimus 这太好了,谢谢!有没有办法执行这段代码,而不必事后重新定义
variable和values?
标签: r dataframe data.table dplyr tidyr