我有一个4列的数据集,如下所示。我想要创建第5列( mean ),它的平均值是基于前3列的第4列的平均值。
例如: Id (5000)在日期(1/1/2018)的第一个小时内的平均值(hour=1)是前3行(2+2+1)/3 = 1.67的平均值。
头(read_df,1:5)
`
Id Date Hour Value Mean
5000 1/1/2018 1 1 1.67
5000 1/1/2018 1 2 1.67
5000 1/1/2
假设我有这样的数据
a b c
1 2 3
1 3 4
1 4 5
2 5 6
2 6 7
3 7 8
4 8 9
我想要的是:
a b c d
1 2 3 a
1 3 4 b
1 4 5 c
2 5 6 a
2 6 7 b
3 7 8 a
4 8 9 a
本质上,我想做一个循环,对于每个组的列a,我想创建一个新的列,它按顺序将字母从a循环到z。第一组有三个元素,所以字母从'a‘到'c’。第3组和第4组只有一个元素,因此字母只分配'a‘。
我正在用数据帧InsectSprays (在R库中)练习R,使用plyr包:
ddply(InsectSprays,.(spray), summarize, sum = sum(count))
Error in .fun(piece, ...) : argument "by" is missing, with no default
我不明白这个错误是什么意思,教程执行了完全相同的命令,输出如下:
spray sum
1 A 174
2 B 184
3 C 25
我还想创建一个新的变量(仍然是错误的):
sp
假设我有以下数据框架:
i grp val
1 x 900
2 x 800
3 x 700
1 y 500
2 y 400
3 y 300
现在,我想在数据帧中添加一个额外的列,它存储相同grp中的所有行的相同值。更准确地说,值应该是从具有val的相应组的行中提取的i == 2。
i grp val val_of_2
1 x 900 800
2 x 800 800
3 x 700 800
1 y 500 400
2 y 400 400
3 y 300 400
我想到了像ddply(df,
我有以下数据框架。
ID Year
A 2001
A 2002
A 2003
B 2009
B 2010
我想要创建第三列,在该列中,我将相应ID的最小年份减为该年,然后添加一个。
简言之,我想提出以下几点:
ID Year New
A 2001 1
A 2002 2
A 2003 3
B 2009 1
B 2010 2
我对R和dplyr非常陌生,而且没有找到没有循环的方法。
提前谢谢你
问题的简短版本:如何使用ddply来总结按多个变量分组的数据?
我目前使用这段代码按条件进行总结:
ddply(ExampleData, .(Condition), summarize, Average=mean(Var1, na.rm=TRUE), SD=sd(Var1),N=length(Var1), Med =median(Var1))
如何调整代码以用两个变量(条件和块)进行总结?
期望的输出格式,类似于:
Condition Block Average SD N Med
1 A 1 0.50 .. .. ..
2 A 2
我试图重现dplyr包中的一个示例,但收到此错误消息。我希望看到每个组合的频率都会产生一个新的列n。我遗漏了什么?我三次检查了包是否已加载。
library(dplyr)
# summarise peels off a single layer of grouping
by_vs_am <- group_by(mtcars, vs, am)
by_vs <- summarise(by_vs_am, n = n())
n()中出现错误:不应直接调用此函数
我有这样一个数据框架:
Letters Dates
A 22/03/2015
A 22/03/2015
A 23/03/2015
B 22/03/2015
B 23/03/2015
C 23/03/2015
C 23/03/2015
我想创建另一列(Dates2),它在每行指定带该字母的所有行的最小日期。其结果是:
Letters Dates Dates2
A 22/03/2015 22/03/2015
A 22/03/2015 22/03/2