我有以下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
,我不确定我是如何过滤任何内容的......
答案 0 :(得分:3)
我会将其实现为:
library(tidyverse)
df = read_csv(...)
df %>%
gather(from_col, combined, column2, column3) %>%
mutate(from_column_2 = ifelse(from_col == "column2", T, F))
祝你好运!