R 如何创建名为“的第三列”;重量“;基于其他列的值?当列值为NA时,将指定0权重

R 如何创建名为“的第三列”;重量“;基于其他列的值?当列值为NA时,将指定0权重,r,dplyr,calculated-columns,R,Dplyr,Calculated Columns,我在一个数据框中有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 from到tel post 1 S01 S02 123 ABC 2 S02 S03 456 3 S04 S05 NA XYZ 我需要创建以下权重列。 其中重量=10*(电话)+1*(邮政) 如果该值

我在一个数据框中有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
from到tel post
1 S01 S02 123 ABC
2 S02 S03 456
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

from到tel-post重量
1 S01 S02 123 ABC 11
2 S02 S03 456 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>"))
df