【发布时间】:2022-01-22 03:46:57
【问题描述】:
在下面的示例中,我想根据“变量”列的值(即 1 和 20)添加“值”列。
toy_data <-
tibble::tribble(
~x, ~y, ~variable,
1, 2, "x",
10, 20, "y"
)
像这样:
| x | y | variable | value |
|---|---|---|---|
| 1 | 2 | x | 1 |
| 10 | 20 | y | 20 |
但是,以下都不起作用:
toy_data %>%
dplyr::mutate(
value = get(variable)
)
toy_data %>%
dplyr::mutate(
value = mget(variable)
)
toy_data %>%
dplyr::mutate(
value = mget(variable, inherits = TRUE)
)
toy_data %>%
dplyr::mutate(
value = !!variable
)
我该怎么做?
【问题讨论】:
-
您可以将数据重新整形为长格式(如
pivot_longer(toy_data, -variable))并进行自连接...对于这样的小案例可能有点复杂,但应该可以很好地扩展到更复杂的数据集 -
如果
variable只有两个级别,可以这样做:toy_data %>% mutate(value = ifelse(variable == "x", {x}, {y}))