我有一个小困难的东西,我相信更好的R用户会发现很容易.我有一个dataframe安排标识符的每一行,然而有些有两行每个标识符.这是因为调查被问了两次,我试图找到最高的两个调查作为一个单一的行.
行被结构化为“标识符”,随后是“二进制变量1”、“二进制变量2”、“二进制变量3”。二进制可以包括NA。
最小可报告示例:
cnames <- c("ID", "bin1", "bin2", "bin3")
a<- c("A", 1, 0, 0)
b <- c("A",0, NA, 1)
c <- c("B", 0, 0, 0)
d <- c("B", 0, 1, 0)
aa<- rbind(cnames, a,b,c,d)
aa <- as.data.frame(aa)
我想创建一个每个标识符只有一行的 Dataframe ,选择NA〈0〈1,例如,示例中的ID“A”将变为c(“A”,1,0,1),“B”将变为c(“B”,0,1,0)。
非常感谢,
2条答案
按热度按时间jpfvwuh41#
您可以
summarise
across
每group_by
列,并获得每列的max
值,如下所示:创建于2023-03-27带有reprex v2.0.2
使用数据:
hi3rlvi22#
Quinten的解决方案总体上非常好。
然而,代替
我会使用不带as.numeric()的命令:
原因是,当一个标识符的列的所有元素都是NA时,您会得到意想不到的结果。例如:
为您提供:
不使用as.numeric的解决方案会给出所需的结果: