【发布时间】:2021-06-11 00:27:31
【问题描述】:
我需要折叠 data.table 中部分重复的行
例子:
df.in <- data.table (
tkr = c("abc", "abc", "def", "def", "ghi", "ghi"),
lboq = c(0,296, -390, 0, -88, 0),
locq = c(-296,0, 0, 390, 0, 88),
ap = c(134,134, 23, 23, 17, 17)
)
tkr lboq locq ap
1: abc 0 -296 134
2: abc 296 0 134
3: def -390 0 23
4: def 0 390 23
5: ghi -88 0 17
6: ghi 0 88 17
使用这个例子,我想得到三行,其中第二行折叠成第一行,第 2 列有 296;第 4 行的 390 将在第 3 行的第 3 列中,依此类推。
所以想要的结果是:
df.out <- data.table (
tkr = c("abc", "def", "ghi"),
lboq = c(296, -390, -88),
lbcq = c(-296, 390, 88),
ap = c(134, 23, 17)
)
tkr lboq lbcq ap
1: abc 296 -296 134
2: def -390 390 23
3: ghi -88 88 17
我已经研究了以下反应:
collapse rows in 2 different columns in data.table?
尽管有上述两个标题,但它们看起来更像是扩张而不是崩溃
我还在下面探索了使用合并,但这似乎仅适用于列;行有合并吗?
Coalesce two string columns with alternating missing values to one
Use dplyr coalesce in programming
How to use Coalesce function on a dataframe
然后我看了
R Summarize Collapsed Data.Table
但是这里的折叠已经完成,需要总结;我需要做折叠
这看起来正是我所需要的
Merging complementary rows of a dataframe with R
但让它适应我的使用似乎不起作用:
df.in %>%
group_by(tkr, ap) %>%
summarise_all(funs(sort(.)[1]))
我错过了什么?
【问题讨论】:
标签: r