如何在一行代码中对R中的列进行子集和求和
我想知道如何将我的数据子集和该子集数据中的一列求和合并到一行中。我可以很容易地在两个数据框中完成这项工作,但是我有太多的数据框需要完成这项工作,所以我想尽量减少对每个数据集的复制/粘贴/轻微编辑 以下是我知道我可以做到的两行代码:如何在一行代码中对R中的列进行子集和求和,r,subset,R,Subset,我想知道如何将我的数据子集和该子集数据中的一列求和合并到一行中。我可以很容易地在两个数据框中完成这项工作,但是我有太多的数据框需要完成这项工作,所以我想尽量减少对每个数据集的复制/粘贴/轻微编辑 以下是我知道我可以做到的两行代码: sumE_df201 = subset(df201, t>=55) test = sum(sumE_df201)$e 我试图将它们合并为一个,但收到以下错误: sumE_df201 = sum(subset(df201, t>=55))$e >Er
sumE_df201 = subset(df201, t>=55)
test = sum(sumE_df201)$e
我试图将它们合并为一个,但收到以下错误:
sumE_df201 = sum(subset(df201, t>=55))$e
>Error in sum(subset(df201, t >= 55))$e :
>$ operator is invalid for atomic vectors
如果有人对如何正确地做到这一点有见解,我将不胜感激。我确信,最终,我做两行并为所有数据帧复制它将花费更少的时间(我用ctrl+f编辑它们并替换,如果可以的话,但仍然如此)。但我正在努力提高我的阅读能力
此处的示例/垃圾数据:
t= 1:121
e= rnorm(t, mean=t, sd=1)
junk1 = 301:421
junk2 = 501:621
df201 = cbind(t, e, junk1, junk2)
$
不起作用的原因是子集(df201,t>=55)
是一个原子向量,您可以通过?“$”
查看更多帮助
一种方法是使用索引
sum(subset(df201, t>=55)[, "e"]).
# 5897.988
另一种方法是将其转换为数据帧,然后使用$
sum(as.data.frame(subset(df201, t>=55))$e)
# 5897.988
带有
dplyr的选项
library(dplyr)
df201 %>%
filter(t >= 55) %>%
pull(e) %>%
sum
怎么样sum(子集(df201,t>=55)[,“e”])
Yep!是的。你知道为什么索引是那样的,而不是用$work吗?如果你把这个作为正式的回答,我会选择的哈哈