gpt4 book ai didi

替换数据框中的特定行

转载 作者:行者123 更新时间:2023-12-04 12:19:29 26 4
gpt4 key购买 nike

在以下数据框中,

col1 <- c("g1","g2","g3",NA,"g4",NA)
col2 <- c(NA,"a1","a2",NA,"a3","a4")
df1 <-data.frame(col1,col2)

我想将 col1 中的 NA 行替换为 col2 的相应行。通过提取包含 NA 的行继续进行是否正确
row <- which(is.na(col1))

然后从 col2 中提取字符
extract <- df1$col2[row]

在此之后,我不知道如何用提取的字符替换 col1 中的 NA。
请帮忙!

最佳答案

你不需要which .只是 is.na(df1$col1)足以给出 logical指数。数据集的唯一问题是两列都是 factor类基于您如何创建 data.frame .最好用stringsAsFactors=FALSEdata.frame(..)作为获取 character 的参数列。否则,如果 levelscol2不存在于 col1更换时,这将给 warning信息

# Warning message:
#In `[<-.factor`(`*tmp*`, is.na(df1$col1), value = c(1L, 2L, 3L, :
#invalid factor level, NA generated

在这里,我正在转换 columnscharacter类,然后再进行替换以避免上述警告。
df1[] <- lapply(df1, as.character)
indx <- is.na(df1$col1)
df1$col1[indx] <- df1$col2[indx]
df1
# col1 col2
#1 g1 <NA>
#2 g2 a1
#3 g3 a2
#4 <NA> <NA>
#5 g4 a3
#6 a4 a4

关于替换数据框中的特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27401951/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com