我在一个数据框中有 4 列,根据这 2 列,需要创建第 5 列权重。当列值为 NA 时,将分配 0 权重。
假设我在 R 中有一个名为 exp 的数据帧。
from to tel post
1 S01 S02 123 ABC
2 S02 S03 456 <NA>
3 S04 S05 NA XYZ
我需要创建以下权重列。 其中重量 = 10 * (电话( + 1* (邮政(
如果值为 NA,则其为零
from to tel post weight
1 S01 S02 123 ABC 11
2 S02 S03 456 <NA> 10
3 S04 S05 NA XYZ 1
你可以做:
with(df, (10 * !is.na(tel)) + (1 * !is.na(post)))
[1] 11 10 1
示例数据:
df <- read.table(text = " from to tel post
1 S01 S02 123 ABC
2 S02 S03 456 <NA>
3 S04 S05 NA XYZ",
header = TRUE,
stringsAsFactors = FALSE,
na.strings = c("NA", "<NA>"))