r - 在 dplyr 中跨选定数量的列添加行

标签 r dataframe dplyr row magrittr

dplyr 工作流程中,我想在选定数量的列上附加一行。

期望的结果

mtcars数据开始,应用函数,目标是将字符串"A"添加到列2:5 应得到以下结果:

                    mpg  cyl disp  hp  drat wt    qsec   vs am   gear carb
                    NA     A A     A   A    NA    NA     NA NA   NA   NA
Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2

满足以下标准:

  • 对于 vars() 中具有可用索引的列,添加了 "A" 字符串
  • 对于其余列,提供了 NA

方法

require(dplyr)
mtcars %>%
  mutate_at(.cols = vars(2:5),
            .funs = add_row(. = "A", .before = 1))

当然,这会导致错误消息:

Error: Unsupported index type: NULL

因此我的问题是:如何利用 add_row 或类似的方法来强制通过最初通过 vars() 传递的一组列的值?


旁注

我不介意通过 rbind 执行此操作,但我想保留我的 %>% 工作流程:

  1. %>% - 接收对象
  2. 在第一行向列中添加一些内容 x:y %>%
  3. 在第一行到各列中添加一些内容 m:n %>%
  4. 其他操作

最佳答案

添加行然后更新:

mtcars %>% 
  head %>%
  add_row(.before = 1) %>% 
  mutate_at(.cols = vars(2:5),
            funs(ifelse(is.na(.), "A", .)))

#    mpg cyl disp  hp drat    wt  qsec vs am gear carb
# 1   NA   A    A   A    A    NA    NA NA NA   NA   NA
# 2 21.0   6  160 110  3.9 2.620 16.46  0  1    4    4
# 3 21.0   6  160 110  3.9 2.875 17.02  0  1    4    4
# 4 22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
# 5 21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
# 6 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
# 7 18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

注意:这会将“A”添加到任何具有 NA 的行。

关于r - 在 dplyr 中跨选定数量的列添加行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42806285/

相关文章:

r - 如何替换特定的向量值?

r - 如何对数据帧进行分组,然后在 R 中转置和 rbind 组?

python - 如何在Python数据框中的列上编写和循环列表?

string - 如何将两个向量粘贴在一起并在末尾填充?

r - 在 R 中为管道中的多个操作枚举变量时 DRY

r - R中data.frames的expand.grid函数

R,在 data.frame 中找到连续时间步长的平均长度

r - (d)plyr 中的 mutate() 在获取时不会创建新列

r - 使用字符串作为输入使用 dplyr 编程

使用 dplyr 进行滚动回归