我有一种情况,我必须比较数据框中的两列。条件是Field1列具有一组值。 Field2列的值很少,其余均为NA。还有另一列称为Field3。因此,这里的工作是将Field1的值与Field2进行比较。比较条件如下。
如果Field1在Field2中具有对应的行。复制Field2的行值。 例如位置和地点。所以,我必须复制地方。
如果Field1没有相应的Field2值。然后比较Field1 与Field3。将Field3的值复制到Field2。
请提出解决方法。
dft <- data.frame(Field1 = c("Location","Time","Date","Problem"),
Field2 = c("Place","Balance","NA","NA"),
Field3 = c("NA","NA","Pay","NA"))
答案 0 :(得分:2)
如果我正确理解了问题,则您尝试用NA
中的值替换Field2
中的Field3
,并替换NA
中的Field3
使用Field2
中的值。假设每次观察总是存在一个NA
和一个Field2
或Field3
中的字符串,则可以使用dplyr的coalesce
进行合并:
library(dplyr)
mutate(df, Field4 = coalesce(Field2, Field3))
#### OUTPUT ####
Field1 Field2 Field3 Field4
1 Location Place <NA> Place
2 Time Balance <NA> Balance
3 Date <NA> Pay Pay
4 Problem <NA> Check Check
只需确保您的NA
确实是NA
,而不是"NA"
这样的字符串。例如,将该数据框中的值与您提供给我们的数据框进行比较。另外,请确保您的变量包含字符串而不是因素:
df <- data.frame(Field1 = c("Location","Time","Date","Problem"),
Field2 = c("Place","Balance", NA, NA),
Field3 = c(NA, NA, "Pay","Check"), stringsAsFactors = F)
注意 :我替换了一个NA
以匹配图像中的数据框,即c("NA","NA","Pay","NA")
为{{1 }}。