【发布时间】:2018-07-17 10:02:59
【问题描述】:
所以有一种情况:
数据帧:
dat <- data.frame(colA = rep(c(0,1,0), c(6,1,8)),
colB = rep(c(1,0,1,0), c(1,4,1,9)),
colC = rep(c(0,1,0), c(9,1,5)),
colD = rep(c(0,1,0), c(8,1,6)),
colE = rep(0, 15),
color = rep(c("blue","red","yellow"), each=5),
colorId = rep(c(22,40,35), each=5))
colA colB colC colD colE color colorId
0 1 0 0 0 Blue 22
0 0 0 0 0 Blue 22
0 0 0 0 0 Blue 22
0 0 0 0 0 Blue 22
0 0 0 0 0 Blue 22
0 1 0 0 0 Red 40
1 0 0 0 0 Red 40
0 0 0 0 0 Red 40
0 0 0 1 0 Red 40
0 0 1 0 0 Red 40
0 0 0 0 0 Yellow 35
0 0 0 0 0 Yellow 35
0 0 0 0 0 Yellow 35
0 0 0 0 0 Yellow 35
0 0 0 0 0 Yellow 35
最终目标
colNames color colorId
colB Blue 22
colB Red 40
colA Red 40
colD Red 40
colC Red 40
None Yellow 35
这是我开始采用的方法,然后我疑惑地质疑自己。下面未显示,我创建了另一列,它使用 rowSums (dat$rowsu
我正在考虑编写一个函数,如果 colorId 重复计数超过 0 个,则保留 rowsu > 0 的任何行,在特殊情况下为黄色,如果它们都是 0 并且整体 rowsu = 0,然后在所有重复项中保留一行,类似于下面的内容。 (如果是这个问题,在编码这部分时会遇到麻烦)
colA colB colC colD colE color colorId
0 1 0 0 0 Blue 22
0 1 0 0 0 Red 40
1 0 0 0 0 Red 40
0 0 0 1 0 Red 40
0 0 1 0 0 Red 40
0 0 0 0 0 Yellow 35
其次,对于后一个用名称创建列的问题,是否还在考虑一个 if 函数,如果它下面有一个 1,则使用 colname 名称将其提取到行名称中?不确定。
【问题讨论】:
标签: r dataframe conditional-statements