【发布时间】:2022-01-26 17:51:38
【问题描述】:
我有这个数据框:
df <- df <- structure(list(A01 = c(0L, 0L, 2L, 0L, 4L, 1L, 10L, 10L), A02 = c(0L,
-1L, 0L, 1L, 4L, 4L, 9L, 12L), A03 = c(-5L, -4L, 2L, -4L, 3L,
2L, 8L, 12L), A04 = c(-1L, -3L, 3L, 1L, 3L, -3L, 9L, 12L), A05 = c(-1L,
-3L, 1L, -1L, 3L, 0L, 7L, 10L), A06 = c(2L, -3L, 3L, 1L, 4L,
0L, 7L, 12L), A07 = c(3L, -3L, 3L, 1L, 4L, 0L, 7L, 9L), X = c(2L,
2L, 6L, 7L, 12L, 15L, 22L, 24L)), class = "data.frame", row.names = c(NA,
-8L))
A01 A02 A03 A04 A05 A06 A07 X
1 0 0 -5 -1 -1 2 3 2
2 0 -1 -4 -3 -3 -3 -3 2
3 2 0 2 3 1 3 3 6
4 0 1 -4 1 -1 1 1 7
5 4 4 3 3 3 4 4 12
6 1 4 2 -3 0 0 0 15
7 10 9 8 9 7 7 7 22
8 10 12 12 12 10 12 9 24
我想应用此代码: 来自我以前的问题Mutate a new column and paste value from existing columns conditional on string in column names
library(dplyr)
library(stringr)
df %>%
rowwise %>%
mutate(new_col = get(str_c('A0', X))) %>%
ungroup
我收到错误:
Error: Problem with `mutate()` column `new_col`.
i `new_col = get(str_c("A0", X))`.
x object 'A012' not found
i The error occurred in row 5.
Run `rlang::last_error()` to see where the error occurred.
而且我知道原因:原因是代码尝试获取A012 列,因为X 列= 12 中的第5 行。但是没有列A012。
Desired_output:
A01 A02 A03 A04 A05 A06 A07 X new_col
1 0 0 -5 -1 -1 2 3 2 0
2 0 -1 -4 -3 -3 -3 -3 2 -1
3 2 0 2 3 1 3 3 6 3
4 0 1 -4 1 -1 1 1 7 1
5 4 4 3 3 3 4 4 12 NA
6 1 4 2 -3 0 0 0 15 NA
7 10 9 8 9 7 7 7 22 NA
8 10 12 12 12 10 12 9 24 NA
【问题讨论】:
-
您是否总是希望列中包含“0”,或者您是否想将这些数字视为用零填充到某个宽度?比如说你确实有一列与 X = 12 行匹配。那是 A12 还是 A012?
-
非常好的问题。确实,这作为问题出现了。但是对于这个问题,colnames 是原样的! stackoverflow.com/questions/70503223/…>