我有一个使用R语言的代码,我想总结所有数据框(df $ number是未列出的结果' res')
总结果= [1] 1 3 5 7 9 20 31 42
IB_i_times
我使用的是IB_000_times
,但摘要的结果是' 155'这不是正确的答案,因为正确的答案是' 118'
用什么代码来总结'总计'
谢谢你。答案 0 :(得分:0)
我运行了你的代码,我认为你可能会对你想要总结的东西感到困惑。
您setdiff
包含值1 3 5 7 9 20 31 42
,其总和为118。
所以,如果你做sum(setdiff(1:50, as.numeric(names(total))))
,你将得到你正在寻找的118。
您的total
变量与此不同。让我解释一下你在做什么以及我认为你应该做些什么。
您的代码:total <- table(df$number)[as.numeric(names(table(df$number)))<=50]
]
当您table()
时,您会从向量中获取每个唯一值,以及此数字在向量上显示的次数。
当您获得此表的names()
时,您会将这些唯一值视为character
,这就是您设置as.numeric
的原因。
但是函数unique()
为你完成这项工作,他从向量中提取唯一值。
以下是您可以执行的操作:total <- unique(df$number[which(df$number <= 50)])
which()
获取值&lt; = 50的ID,并且唯一提取这些ID的唯一值。
最后:sum(setdiff(1:50, total))
将1到50之间的所有值都加到total
向量中。
在我看来,sum(setdiff(total, 1:50))
更直观。