【发布时间】:2017-04-03 19:25:16
【问题描述】:
我的数据集有以下形式
Name year val
”a” 1 25
”a” 1 75
”a” 2 20
”a” 2 40
”a” 2 60
”a” 3 50
”b” 1 20
”b” 2 10
”b” 2 20
”b” 2 30
”b” 3 40
”b” 3 60
所以它由名称、年份和值组成。我想找到每个 year 的 values (val) 的平均值,并按 name 分组。即,我有兴趣获得
Name year average terms in the average
”a” 1 50 2
”a” 2 40 3
”a” 3 NA 1
”b” 1 NA 1
”b” 2 20 3
”b” 3 50 2
在 average 列中,只要少于 2 个术语,它就会显示 NA,我还添加了第四列,其中包含平均值中使用的术语数。
这是很多操作,它们自然可以在for-loop 中完成。但是有什么专业的R-方式来解决这样的问题呢?
数据
df = structure(list(name = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L, 2L, 2L), .Label = c("a", "b"), class = "factor"),
year = c(1, 1, 2, 2, 2, 3, 1, 2, 2, 2, 3, 3), val = c(25,
75, 20, 40, 60, 50, 20, 10, 20, 30, 40, 60)), .Names = c("name",
"year", "val"), row.names = c(NA, -12L), class = "data.frame")
【问题讨论】:
-
name='a' year = 2 的平均值不应该是 40 吗?
-
您提供的df不是data.frame。
标签: r