我正在处理一个有几千行的时间序列,但下面是我想要讨论的两列的一个小示例:
data <- data.frame(
Precipitation = sample(c("0.12", "0.14", "0.08", "0.30", "0.10", "0.40", "1.6", "0", "0")),
Character = sample(c("A", "B", "C", "D", "E", "F", "G", "H", "I")))沉淀列中的每个值对应于字符列中的字母(即0.12 -> A、0.14 -> B等)。
这些字母中的每一个都表示需要对降水栏中的值进行的潜在“更改”,即:
现在,我想使用dplyr创建一个新列,将字符列所注意到的除法放到沉淀列中,同时还将不需要任何更改的相应的A、H和I行带来。这样做的代码是什么样子的?
谢谢你的帮助!这是非常感谢的。
发布于 2018-12-15 07:01:21
像这样吗?它在case_when中使用dplyr。
library(tidyverse)
data <- tibble(
Precipitation = sample(c(0.12, 0.14, 0.08, 0.30, 0.10, 0.40, 1.6, 0, 0)),
Character = sample(c("A", "B", "C", "D", "E", "F", "G", "H", "I")))我假设你的降水数字对我来说是数字而不是字符或因素,所以没有引号。
data2 <- data %>%
mutate(new = case_when(Character == "B" ~ Precipitation/2,
Character == "C" ~ Precipitation/3,
Character == "D" ~ Precipitation/4,
Character == "E" ~ Precipitation/2,
Character == "F" ~ Precipitation/4,
Character == "G" ~ Precipitation/4,
TRUE ~ Precipitation)) 任何不是"B“到"G”的东西都是用TRUE表示的,是原始值(降水)。
# A tibble: 9 x 3
Precipitation Character new
<dbl> <chr> <dbl>
1 0.12 F 0.03
2 0.4 H 0.4
3 0.3 B 0.15
4 0.08 E 0.04
5 0 I 0
6 0.14 D 0.035
7 1.6 G 0.4
8 0 C 0
9 0.1 A 0.1https://stackoverflow.com/questions/53787479
复制相似问题