逐行匹配数据框两列的值

Match the values row by row of two columns of a data frame

我有一个类似这样的数据框:

| Employee | Expense_Type    | Default_Expense | Amount |   |
|----------|-----------------|-----------------|--------|---|
| John     | Airfare         | Airfare         | 1000   |   |
| David    | Hotel_Tax       | Hotel           | 50     |   |
| Nancy    | Miscellaneous   | Undefined       | 500    |   |
| Mike     | Individual_Meal | Individual_Meal | 75     |   |
| Jenny    | Airline_tax     | Airfare         | 125    |   |

我想逐行比较 'Expense_Type' 和 'Default_Expense' 列并生成一个新列来粘贴不匹配的值。例如,从上面的table,我们可以看出第2、3、5行不匹配,因为hotel_tax与hotel不同,miscellaneous与undefined不同,airline_tax不同比机票。

我尝试研究在遇到以下解决方案时提到的不同问题: df2$Expense_Type[!(df2$Expense_Type %in% df2$Default_Expense)] 但这似乎对我不起作用。

%in% 运算符不比较每一行。使用 == 运算符来做到这一点。这会将每一行转换为可用于过滤的布尔值:-)

df2[df2$Expense_Type == df2$Default_Expense, ]

对于值:

df$newcol <- ifelse(df2$Expense_Type == df2$Default_Expense, "Correct", "Wrong")