Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在dplyr::summary中使用可变的列数/循环数_R_Dplyr - Fatal编程技术网

在dplyr::summary中使用可变的列数/循环数

在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) %>%

目前我在R。 这只不过是给了我城市里男性和女性的总数

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)