R编程和数据帧

时间:2017-03-17 16:36:24

标签: r dataframe sum digits

我有一个使用R语言的代码,我想总结所有数据框(df $ number是未列出的结果' res')

总结果= [1] 1 3 5 7 9 20 31 42

IB_i_times

我使用的是IB_000_times,但摘要的结果是' 155'这不是正确的答案,因为正确的答案是' 118'

用什么代码来总结'总计'

谢谢你。

1 个答案:

答案 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))更直观。