我在R中有一个名为QCEW_County_Denominated的数据框。在这个数据框中,我有一个名为Industry的列。每当此列的值为[31-33],[44-45]或[48-49] - 实际值 - 而不是值范围时,我想分别将值更改为31,44和48。关于如何格式化的任何建议?如果 - 那么R中的陈述是我最薄弱的一点,所以我想我会在这里问。
答案 0 :(得分:0)
结帐case_when()
library('dplyr')
x <- data.frame(industry = rep(c("[31-33]","[44-45]","[48-49]"), each = 4))
x %>%
mutate(industry_n = case_when(.$industry == "[31-33]" ~ 31,
.$industry == "[44-45]" ~ 44,
.$industry == "[48-49]" ~ 48))
或者如果您拥有dplyr
(devtools::install_github("hadley/dplyr"
)的开发版本,则可以运行:
x %>%
mutate(industry_n = case_when(industry == "[31-33]" ~ 31,
industry == "[44-45]" ~ 44,
industry == "[48-49]" ~ 48))
答案 1 :(得分:0)
或者就像这样:
df <- data.frame(Industry = rep(c("[31-33]","[44-45]","[48-49]"), each = 4), stringsAsFactors = F)
df$Industry[df$Industry=="[31-33]"] <- 31
df$Industry[df$Industry=="[44-45]"] <- 44
df$Industry[df$Industry=="[48-49]"] <- 48
答案 2 :(得分:0)
Lucy的代码是理想的。
但是,如果由于某种原因你不打算使用dplyr(虽然我没有看到你不应该这样做的原因),你可以使用嵌套if函数:
x$new <- ifelse(x$industry == "[31-33]", 31, ifelse(x$industry == "[44-45]", 44, ifelse(x$industry == "[48-49]", 48, x$industry)))
诸如此类