假设我们有一个data.frame'df':
speed dist lan
4 2 "bra"
4 10 "bra"
7 4 "bra"
7 22 "col"
8 16 "col"
9 10 "col"
10 18 "fin"
...
我想实现一些关于速度和dist groupin_by lan的操作,例如,尝试打印一些值。 我该怎么做?
我尝试过这种方式,但我无法取得成功:
df %>%
group_by(lan) %>%
(function(.) {
print(.$speed)
print(.$dist)
})
答案 0 :(得分:1)
您应该使用do
作为上述评论中建议的@ r2evans。但通常最好只返回原始data.frame
,这样您就可以继续使用它了。例如,在你的情况下,你可能想要计算平均速度和平均值dist:
df %>%
group_by(lan) %>%
do({
cat("lan = ", .$lan[1], "\n")
print(.$speed)
print(.$dist)
.
}) %>%
summarise(mean(speed), mean(dist))
这样我就可以显示输出,这是mtcars
的一个例子。
mtcars %>%
group_by(cyl) %>%
do({cat("cyl = ", .$cyl[1], "\n")
print(.$mpg)
print(.$wt)
.}) %>%
summarise(mean(mpg), mean(wt))
## cyl = 4
## [1] 22.8 24.4 22.8 32.4 30.4 33.9 21.5 27.3 26.0 30.4 21.4
## [1] 2.320 3.190 3.150 2.200 1.615 1.835 2.465 1.935 2.140 1.513 2.780
## cyl = 6
## [1] 21.0 21.0 21.4 18.1 19.2 17.8 19.7
## [1] 2.620 2.875 3.215 3.460 3.440 3.440 2.770
## cyl = 8
## [1] 18.7 14.3 16.4 17.3 15.2 10.4 10.4 14.7 15.5 15.2 13.3 19.2 15.8 15.0
## [1] 3.440 3.570 4.070 3.730 3.780 5.250 5.424 5.345 3.520 3.435 3.840 3.845 3.170 3.570
## Source: local data frame [3 x 3]
##
## cyl mean(mpg) mean(wt)
## 1 4 26.66364 2.285727
## 2 6 19.74286 3.117143
## 3 8 15.10000 3.999214