我想基于因子列添加一列均值R data.frame.像这样:
df1 <- data.frame(X = rep(x = LETTERS[1:2], each = 3), Y = 1:6)
df2 <- aggregate(data = df1, Y ~ X, FUN = mean)
df3 <- merge(x = df1, y = df2, by = "X", suffixes = c(".Old",".New"))
df3
# X Y.Old Y.New
# 1 A 1 2
# 2 A 2 2
# 3 A 3 2
# 4 B 4 5
# 5 B 5 5
# 6 B 6 5
Run Code Online (Sandbox Code Playgroud)
要完成这个问题,我要创建两个不必要的data.frames.我想知道一种方法,可以通过因子列将一列方法附加到我的原始列中 …
我需要使用R按组查找变量的运行最大值.变量按组内的时间排序使用df[order(df$group, df$time),].
我的变量有一些NA,但我可以通过用零替换它来处理它.
这是数据框df的样子:
(df <- structure(list(var = c(5L, 2L, 3L, 4L, 0L, 3L, 6L, 4L, 8L, 4L),
group = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L),
.Label = c("a", "b"), class = "factor"),
time = c(1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L)),
.Names = c("var", "group","time"),
class = "data.frame", row.names = c(NA, -10L)))
# var group time
# 1 5 a 1
# 2 2 a 2
# 3 3 a …Run Code Online (Sandbox Code Playgroud) 这是数据:
a <- c(1,1,2,2,3)
b <- c(1,3,5,9,4)
df1 <- data.frame(a,b)
df1
a b
1 1
1 3
2 5
2 9
3 4
Run Code Online (Sandbox Code Playgroud)
我想要这样的东西:
a b max
1 1 3
1 3 3
2 5 9
2 9 9
3 4 4
Run Code Online (Sandbox Code Playgroud)
我的问题:如何计算“a”列的“最大”列分组,“b”列中有值?
我对聚合函数进行了一些研究,但仍然找不到解决方案。
请帮忙
使用R,我想创建一个新列(MaxAct),显示不同列(ActNo)的最大数量,同时按两个因子分组(HHID和PERID)
例如,我有这个数据集:
UID HHID PERID ActNo
1 1000 1 1
2 1000 1 2
3 1000 1 3
4 1000 2 1
5 1000 2 2
6 2000 1 1
7 2000 1 2
8 2000 1 3
9 2000 1 4
10 2000 2 1
11 2000 2 2
Run Code Online (Sandbox Code Playgroud)
然后我想添加新列(MaxAct),如下所示:
UID HHID PERID ActNo MaxAct
1 1000 1 1 3
2 1000 1 2 3
3 1000 1 3 3
4 1000 2 1 2
5 1000 2 2 …Run Code Online (Sandbox Code Playgroud)