如果旁边的列有值,如何用列中的零替换 NA?使用 R
How to replace NA with cero in a columns, if the columns beside have a values? using R
我想知道一种方法来替换列的 NA,如果旁边的列有一个值,这是因为,使用一个例子,如果工人在其他列中有值意味着他那天去上班,所以如果他有一个 NA,这意味着应该用 cero 替换,如果周围的列中没有值,则意味着他那天没有去上班,NA 是正确的
我一直通过对其他列进行排序来做到这一点,但它非常耗时
我的数据样本称为 df,真实数据有 30 列和大约 30,000 行
df <- data.frame(
hours = c(NA, 3, NA, 8),
interactions = c(NA, 3, 9, 9),
sales = c(1, 1, 1, NA)
)
df$hours2 <- ifelse(
test = is.na(df$hours) & any(!is.na(df[,c("interactions", "sales")])),
yes = 0,
no = df$hours)
df
hours interactions sales hours2
1 NA NA 1 0
2 3 3 1 3
3 NA 9 1 0
4 8 9 NA 8
您还可以进行以下操作:
library(dplyr)
mutate(df, X = if_else(is.na(hours) | is.na(interactions), 0, hours))
# hours interactions sales X
# 1 NA NA 1 0
# 2 3 3 1 3
# 3 NA 9 1 0
# 4 8 9 NA 8
我想知道一种方法来替换列的 NA,如果旁边的列有一个值,这是因为,使用一个例子,如果工人在其他列中有值意味着他那天去上班,所以如果他有一个 NA,这意味着应该用 cero 替换,如果周围的列中没有值,则意味着他那天没有去上班,NA 是正确的
我一直通过对其他列进行排序来做到这一点,但它非常耗时
我的数据样本称为 df,真实数据有 30 列和大约 30,000 行
df <- data.frame(
hours = c(NA, 3, NA, 8),
interactions = c(NA, 3, 9, 9),
sales = c(1, 1, 1, NA)
)
df$hours2 <- ifelse(
test = is.na(df$hours) & any(!is.na(df[,c("interactions", "sales")])),
yes = 0,
no = df$hours)
df
hours interactions sales hours2
1 NA NA 1 0
2 3 3 1 3
3 NA 9 1 0
4 8 9 NA 8
您还可以进行以下操作:
library(dplyr)
mutate(df, X = if_else(is.na(hours) | is.na(interactions), 0, hours))
# hours interactions sales X
# 1 NA NA 1 0
# 2 3 3 1 3
# 3 NA 9 1 0
# 4 8 9 NA 8