如何使用dplyr计算嵌套数据帧中的行数
下面是一个愚蠢的数据帧示例:如何使用dplyr计算嵌套数据帧中的行数,r,dplyr,split-apply-combine,R,Dplyr,Split Apply Combine,下面是一个愚蠢的数据帧示例: df <- data_frame(A = c(rep(1, 5), rep(2, 4)), B = 1:9) %>% group_by(A) %>% nest() 出了什么问题?使用dplyr: df %>% group_by(A) %>% mutate(N = nrow(data.frame(data))) A数据N 1 1 5 2 2 4 你可以做: df %>%
df <- data_frame(A = c(rep(1, 5), rep(2, 4)), B = 1:9) %>%
group_by(A) %>%
nest()
出了什么问题?使用
dplyr
:
df %>%
group_by(A) %>%
mutate(N = nrow(data.frame(data)))
A数据N
1 1 5
2 2 4
你可以做:
df %>%
rowwise() %>%
mutate(N = nrow(data))
其中:
#Source: local data frame [2 x 3]
#Groups: <by row>
#
## A tibble: 2 × 3
# A data N
# <dbl> <list> <int>
#1 1 <tibble [5 × 1]> 5
#2 2 <tibble [4 × 1]> 4
#来源:本地数据帧[2 x 3]
#小组:
#
##一个tibble:2×3
#数据
#
#1 1 5
#2 2 4
结合dplyr
和purrr
您可以:
df %>%
rowwise() %>%
mutate(N = nrow(data))
库(tidyverse)
df%>%
变异(n=map_dbl(数据,nrow))
#>#A tible:2×3
#>数据
#>
#> 1 1 5
#> 2 2 4
我喜欢这种方法,因为您保持在通常的工作流程中,在mutate中创建一个新列,但利用
map.*
-系列,因为您需要对列表进行操作。尝试以下方法:df$nRow与我上面提到的apply
系列相比,dplyr
解决方案中非常好的解决方案。我很喜欢这个。
df %>%
rowwise() %>%
mutate(N = nrow(data))
#Source: local data frame [2 x 3]
#Groups: <by row>
#
## A tibble: 2 × 3
# A data N
# <dbl> <list> <int>
#1 1 <tibble [5 × 1]> 5
#2 2 <tibble [4 × 1]> 4