在dplyr::summary中使用可变的列数/循环数
目前我在R。 这只不过是给了我城市里男性和女性的总数在dplyr::summary中使用可变的列数/循环数,r,dplyr,R,Dplyr,目前我在R。 这只不过是给了我城市里男性和女性的总数 df %>% group_by(city) %>% dplyr::summarize(pct.female = sum(sbq04 == "female"), pct.male = sum(sbq04 == "male")) 假设我想在一列sbq05 所述列包含大约18个不同的值(“第一个值”、“第二个值”、…)。 我可以像上面那样做: df %>% group_by(city) %>%
df %>%
group_by(city) %>%
dplyr::summarize(pct.female = sum(sbq04 == "female"), pct.male = sum(sbq04 == "male"))
假设我想在一列sbq05
所述列包含大约18个不同的值(“第一个值”、“第二个值”、…)
。
我可以像上面那样做:
df %>%
group_by(city) %>%
dplyr::summarize(pct.firstvalue = sum(sbq05 == "first value"), pct.secondvalue = sum(sbq05 == "second value"), ....)
但是,我必须显式地键入所有18个值。有没有更短的路
我想得到向量中我列的所有不同值。然后在内部循环,对每个不同的值应用求和。
我对R很陌生,所以我不知道这在技术上是否可行,或者是否有更好的方法
任何帮助都将不胜感激。将附加列添加为分组变量,并获取每个组中的行数。使用
dplyr
中的便利功能count
也可以更轻松地完成此操作。如果希望每个制造商有一行,则可以将值分散开来。以下是内置mpg
数据集的示例:
库(tidyverse)
mpg%>%
计数(制造商,气缸)%>%
展开(气缸,n)
#>#A tibble:15 x 5
#>制造商'4``5``6``8`
#>
#>1奥迪8 NA 9 1
#>2雪佛兰2北美3 14
#>3道奇1 NA 15 21
#>4福特北美10 15
#>5本田9 NA NA NA
#>6现代8 NA 6 NA
#>7吉普车NA 3 5
#>8路虎北美4
#>9 lincoln NA 3
#>10汞钠钠2
#>11日产4北美8 1
#>12庞蒂亚克NA 4 1
#>13斯巴鲁14北美
#>14丰田18北美13 3
#>15大众17 4 6 NA
由(v0.2.0)于2018-08-02创建。表(df$city,df$sbq05)
?