在R tidyr上的spread_上使用NSE

uke

使用以下数据集:

temp <- structure(list(
  GENDER = structure(c(1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 2L), 
                     .Label = c("F", "M"), 
                     class = "factor"), 
  EVERFSM_6 = c(0L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L), 
  `0001` = c(0, 11, 22, 33, 33, 55, 66, 77, 88, 0), 
  n = c(20L, 13L, 4L, 13L, 36L, 94L, 28L, 50L, 27L, 1L)), 
  .Names = c("GENDER", "EVERFSM_6", "0001", "n"), 
  class = c("tbl_df", "data.frame"), 
  row.names = c(NA, -10L))

我正在尝试执行以下spread_操作来汇总数据:

DiscID <- "0001"
colID <- as.name(DiscID)
cols <- c("GENDER", colID, "n")

gender_results <- temp %>%
  select_(.dots=cols) %>%
  group_by_(.dots=cols[1:2]) %>%
  summarise(gender_n = sum(n)) %>% 
  spread_(paste0("`",DiscID,"`"), "gender_n") %>%
  rename(type = GENDER)

但它说:

Error: Key column '`0001`' does not exist in input.

我必须使用select_,group_by_和spread_的_版本,因为我正在使用变量来引用列名。所需的输出在下面,可以通过使用硬编码实现:

spread(`0001`, gender_n) %>%

    type     0    11    22    33    55    66    77    88
  (fctr) (int) (int) (int) (int) (int) (int) (int) (int)
1      F    20    13     4    36    94    28    NA    NA
2      M     1    NA    NA    13    NA    NA    50    27
文森特·邦霍姆(Vincent Bonhomme)

我认为您DiscID已经可以使用了spread_,不需要paste这有帮助吗?

cols <- c("GENDER", colID, "n")
gender_results <- temp %>%
  select_(.dots=cols) %>%
  group_by_(.dots=cols[1:2]) %>%
  summarise(gender_n = sum(n)) %>% 
  spread_(DiscID, "gender_n") %>%
  rename(type = GENDER)

或者:

cols <- list(~GENDER, colID, ~n)
gender_results <- temp %>%
  select_(.dots=cols) %>%
  group_by_(.dots=cols[1:2]) %>%
  summarise(gender_n = sum(n)) %>% 
  spread_(DiscID, "gender_n") %>%
  rename(type = GENDER)

来自dplyrNSE小插曲

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

R-tidyr-spread()-将NA作为列名处理

来自分类Dev

Tidyr :: Nest在不同系统和程序包/ R版本上的不同行为

来自分类Dev

在“|”上使用 tidyr 分隔的问题

来自分类Dev

使用httr(在R上)将空体放在WebHDFS上

来自分类Dev

在R上的特殊字符上使用拆分功能

来自分类Dev

在R中使用列表上的聚合

来自分类Dev

在OS X上使用brew升级R

来自分类Dev

在R中的reulatedulated()术语上使用anova()

来自分类Dev

让R Plumber API在POST上使用JSON

来自分类Dev

在Hadoop安装的集群上使用R

来自分类Dev

在R上使用Magick写多个图像

来自分类Dev

R在嵌套列表上使用mapply

来自分类Dev

在R上使用extract()提取区号

来自分类Dev

在OS X上使用brew升级R

来自分类Dev

让R Plumber API在POST上使用JSON

来自分类Dev

使用 R 在 lpp 上测试 CSR

来自分类Dev

R,在列表上使用表函数

来自分类Dev

使用R软件包'ibroker'获取NSE净值数据

来自分类Dev

在R中的data.table中使用NSE

来自分类Dev

使用R软件包'ibroker'获取NSE净值数据

来自分类Dev

在 R 中使用 NSE 产生信息性的 `stopifnot()` 错误

来自分类Dev

R:子集上的cummean()

来自分类Dev

行r上的if语句

来自分类Dev

for在R上的小滴循环

来自分类Dev

R上nls的AIC

来自分类Dev

R 传播与聚集在 tidyr

来自分类Dev

使用Tidyr在R中彻底重组数据帧

来自分类Dev

R-在ddply上循环

来自分类Dev

在集群上运行R代码