我有一个dada框架,这只是一小部分:
namess[270:285,]
first_name last_name
270 R Horne
271 T H
272 A McEvoy
273 Aumoitte <NA>
274 Johin <NA>
275 Waydelick <NA>
276 Vigneron <NA>
277 Sautereau <NA>
278 Johin <NA>
279 Aumoitte <NA>
280 Georges Taillandier
281 Fernand Sanz
282 John Lake
283 Louis Bastien
284 Louis Hildebrand
285 Daumain <NA>
我想将名为last_name的列中的每个NA值替换为first_name列中的值。 我在这里看到一个类似的帖子是链接
Replace NA in column with value in adjacent column
我尝试使用他们建议的内容
namess$last_name[is.na(namess$last_name)] <- as.character(namess$last_name[is.na(namess$last_name)])
它没有改变任何东西,两个列都是字符类型所以它不是一个因子类型变量的问题
答案 0 :(得分:2)
我们可以使用data.table
。转换&#39; data.frame&#39;到&#39; data.table&#39; (setDT(namess)
),在i
中,我们使用逻辑条件(is.na(last_name)
)并在&#39; first_name&#39;中分配(:=
)这些元素。对应于&#39; last_name&#39;的条件。
library(data.table)
setDT(namess)[is.na(last_name), last_name := first_name]
namess
# first_name last_name
# 1: R Horne
# 2: T H
# 3: A McEvoy
# 4: Aumoitte Aumoitte
# 5: Johin Johin
# 6: Waydelick Waydelick
# 7: Vigneron Vigneron
# 8: Sautereau Sautereau
# 9: Johin Johin
#10: Aumoitte Aumoitte
#11: Georges Taillandier
#12: Fernand Sanz
#13: John Lake
#14: Louis Bastien
#15: Louis Hildebrand
#16: Daumain Daumain
答案 1 :(得分:0)
ifelse
应该在这里为您提供您所需要的内容,但如果没有可重复的示例我无法肯定地说:
namess$last_name <- ifelse(is.na(namess$last_name), namess$first_name, namess$last_name)