【发布时间】:2015-02-23 00:18:28
【问题描述】:
可重现的数据集
data1 <- data.frame(ID = c(1,2), Description = c("Chiquita","Chiquita mazamorra"), Max = c(200,125))
data2 <- data.frame(ID = c(1,2,3,4,5,6,7), Description = c("Chiquita mini", "Chiquita Oriville","Chiquita 24h","Manzano Chiquita 5j...","Chiquita mazamorra 1,2h..","Chiquita mazamorra Buro","Chiquita AM 2F"), Max = c(24,110,80,90,134,123,210))
我有一个数据集data1,如下图
Id Description Max
1 Chiquita 200
2 Chiquita mazamorra 125
我还有另一个数据集data2,如下图
Id Description Actual
1 Chiquita mini 24
2 Chiquita Oriville 110
3 Chiquita 24h 80
4 Manzano Chiquita 5j... 90
5 Chiquita mazamorra 1,2h... 134
6 Chiquita mazamorra Buro 123
7 Chiquita AM 2F 210
8 Chiquita..... 124
9 Chiquita(P) 213
10 Chiquita, mazamorra, S 188
If 语句应检查 Data2 描述是否在 data2$Description Chiquita mazamorra 中包含此字符,如果是,则检查 Data2$Actual > Data1$Max。如果是,那么结果 == 好,否则小。请注意,在 Chiquita mazamorra 之后可能还有其他字符,例如 Chiquita mazamorra 1,2h.. 这没关系,但不是 Chiquita mazamorra Buro
类似地,另一个 ifelse 应该检查 Data2 描述是否包含 Chiquita,如果是,则检查 Data2$Actual > Data1$Max。如果是,那么结果 == 好,否则小。在 Chiquita 之后可以有其他字符,例如 Chiquita 24h 或 Chiquita AM 2F 这些都可以,但不是 Chiquita mini 或 Chiquita Oriville
这是最终期望的输出(data2)
Id Description Actual Result
1 Chiquita mini 24 NA
2 Chiquita Oriville 110 NA
3 Chiquita 24h 80 Small
4 Manzano Chiquita 5j... 90 NA
5 Chiquita mazamorra 1,2h... 134 Good
7 Chiquita mazamorra Buro 123 NA
6 Chiquita AM 2F 210 Good
8 Chiquita..... 124 Small
9 Chiquita(P) 213 NA
10 Chiquita, mazamorra, S 188 Good
我知道这可以使用 grepl 和 ifelse 语句的组合来完成,我不是很自信?也许有更好的方法可以做到这一点,我不知道,我很困惑。需要帮忙。
【问题讨论】:
-
如果您确实需要帮助,请提供可重现的示例:stackoverflow.com/questions/5963269/…
标签: r if-statement dplyr grepl