r语言 - 如何根据其他列的值创建名为"Weight"的第三列?当列值为 NA 时,将分配 0 权重



我在一个数据框中有 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>"))

最新更新