我有一个类似这样的数据框:
| 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”列,并生成一个新列以粘贴不匹配的值。例如,从上表中,我们可以看到第2、3和5行不匹配,因为hotel_tax与hotel不同,杂项与undefined不同,airline_tax与机票不同。
我尝试调查了遇到以下使用以下解决方案时提到的其他问题:
df2$Expense_Type[!(df2$Expense_Type %in% df2$Default_Expense)]
但这似乎对我不起作用。
答案 0 :(得分:2)
%in%
运算符不比较每一行。使用==
运算符执行此操作。这会将每一行转换为一个布尔值,您可以使用它过滤:-)
df2[df2$Expense_Type == df2$Default_Expense, ]
对于值:
df$newcol <- ifelse(df2$Expense_Type == df2$Default_Expense, "Correct", "Wrong")