我正在处理一个数据帧(暗度:10,155 x 33)。数据框的很少行和列是
kfctl delete -f ${CONFIG_FILE}
对于变量age_band,我想使用tidyverse函数split(),mutate()和链接运算符进行以下嵌套操作:
我正在使用以下代码:
rg[1:3, 1:4]
REF_NO children age_band status
1 2148 1 45-50 Partner
2 8099 1 61-65 Partner
3 6611 3 31-35 Partner
> table(rg_age_band)
18-21 22-25 26-30 31-35 36-40 41-45 45-50 51-55
63 456 927 1061 1134 1112 1359 1052
55-60 61-65 65-70 71+ Unknown
1047 881 598 410 55
错误:列library(tidyr); library(dplyr)
rg1=rg %>%
separate(age_band, into = c("a1", "a2"), sep="-") %>%
mutate(a1 = as.numeric(ifelse(rg$a1=="71+", 71, rg$a1)),
a2 = as.numeric(a2),
age = 0.5*(a1+a2)) %>%
select(-a1-a2)
Error: Column `a1` must be length 10155 (the number of rows) or one, not 0
的长度必须为10155(行数)或1,而不是0 。请提出可以采取的措施。
当我在ifelse语句中运行不带'$'的代码时,通常会收到错误找不到对象'a1',而在使用链接运算符和mutate时我们不需要'$'。
对Similar question的讨论无法提供任何有用的解决方案。
我尝试了代码的问题,而问题出在
a1
还
mutate(a1 = as.numeric(ifelse(rg$a1=="71+", 71, rg$a1))
编辑:附加sample data
答案 0 :(得分:0)
以下代码不会产生任何错误:
rg <- data.frame(REF_NO = c(2148, 8099, 6611), children = c(1,1,3), age_band = c("45-50", "61-65", "71+"))
rg %>%
tidyr::separate(age_band, into = c("a1", "a2"), sep="-") %>%
mutate(a1 = as.numeric(ifelse(a1=="71+", 71, a1)),
a2 = as.numeric(a2),
age = 0.5*(a1+a2)) %>%
select(-a1, -a2)