所以我有点麻烦将两列合二为一。我有两列年龄,分为儿童和青少年专栏。例如:
child adolescent
1 NA 12
2 NA 15
3 NA 12
4 NA 12
5 NA 13
6 NA 13
7 NA 13
8 NA 14
9 14 15
10 NA 12
11 12 13
12 NA 12
13 NA 13
14 NA 14
15 NA 14
16 12 13
17 NA 14
18 NA 13
19 NA 13
20 NA 14
21 NA 12
22 NA 13
23 12 15
24 NA 13
25 NA 15
26 NA 12
27 NA 15
28 NA 15
29 NA 13
30 NA 12
31 13 15`
现在我想做的是将它们组合成一个名为" age"并删除所有na值。但是当我尝试以下代码时,遇到了一个问题:
age<- c(na.omit(data$child),na.omit(data$adolescent))
问题在于我的原始数据有514行,但当我将两列合并后删除时,我最终会得到543个值,而不是514,我不知道为什么。
所以,如果可能的话,有人可能会首先解释为什么我获得的价值超出了我的计划,其次可能是将这两列合并的更好方法。
编辑:我正在寻找类似的东西 age
1 12
2 15
3 12
4 12
5 13
6 13
7 13
8 14
9 14
10 12
11 12
12 12
13 13
14 14
15 14
16 12
17 14
18 13
19 13
20 14
21 12
22 13
23 12
24 13
25 15
26 12
27 15
28 15
29 13
30 12
31 13
32 14
33 13
34 11
35 15
36 13
提前致谢
答案 0 :(得分:2)
这一行:
age<- c(na.omit(data$child),na.omit(data$adolescent))
将child
字段中的所有非缺失值连接到adolescent
字段中的所有非缺失值。我怀疑你想使用其中一种解决方案
# youngest age
age<- pmin(data$child,data$adolescent,na.rm=T)
# oldest age
age<- pmax(data$child,data$adolescent,na.rm=T)
# child age, replaced with adolescent if missing
age<- data$child
age[is.na(age)] <- data$adolescent[is.na(age)]
# ^ notice same logical index ^
# |_______________________________|
答案 1 :(得分:2)
您的代码适用于示例数据,但您可以尝试:
age <- c(data$child, data$adolescent)
age <- age[!is.na(age)]
这将数据框中的两列组合成一个向量,并删除所有NA
元素。
答案 2 :(得分:2)
df$age <- ifelse( !(is.na(df$child)), df$child , df$adolescent)