R中字符值的OR函数
我想检查数据帧的变量是否至少包含一个值。我想要OR函数的R等价物,看起来像这样(这里的OR函数显然是错误的)R中字符值的OR函数,r,R,我想检查数据帧的变量是否至少包含一个值。我想要OR函数的R等价物,看起来像这样(这里的OR函数显然是错误的) 损失$League如果损失$Drawed,则将具有“Highschool”值。From包含“Academy”或“H.S.”,否则具有“No Highschool”值 我不熟悉R,英语不是我的第一语言,如果我的问题不太清楚,我很抱歉。使用(或)运算符如下: mydf$lost <- ifelse(lost$Drafted.From == "Academy" | lost$Drafte
损失$League
如果损失$Drawed,则将具有“Highschool”值。From
包含“Academy”或“H.S.”,否则具有“No Highschool”值
我不熟悉R,英语不是我的第一语言,如果我的问题不太清楚,我很抱歉。使用
(或)运算符如下:
mydf$lost <- ifelse(lost$Drafted.From == "Academy" | lost$Drafted.From == "H.S.", "Highschool", "Not highschool")
mydf$lost这一切都取决于对“contains”一词的解释。如果Drawed.From
列仅包含单个单词或完整(精确)匹配,则垂直管道|
或%
运算符中的%就足够了。否则您将需要grepl
一些示例数据:
lost <- data.frame(drafted.from.1 = c('Academy','College','H.S.'),
drafted.from.2 = c('He studied at the Academy','She went to College','He attended Dartmore H.S.'))
这给出了正确的结果:
[1] "Highschool" "Not highschool" "Highschool"
[1] "Highschool" "Not highschool" "Highschool"
> ifelse(lost$drafted.from.2 %in% c("Academy","H.S."), "Highschool", "Not highschool")
[1] "Not highschool" "Not highschool" "Not highschool"
但在这种情况下,grepl
也起作用:
> ifelse(grepl("Academy|H.S.", lost$drafted.from.1), "Highschool", "Not highschool")
[1] "Highschool" "Not highschool" "Highschool"
对于drafted.from.2
列,您需要grepl
来分配Highschool
和Not Highschool
值:
ifelse(grepl("Academy|H.S.", lost$drafted.from.2), "Highschool", "Not highschool")
这给出了正确的结果:
[1] "Highschool" "Not highschool" "Highschool"
[1] "Highschool" "Not highschool" "Highschool"
> ifelse(lost$drafted.from.2 %in% c("Academy","H.S."), "Highschool", "Not highschool")
[1] "Not highschool" "Not highschool" "Not highschool"
关于从.2
列中起草的,%
中的%将不会给出正确的结果(或使用|
或运算符):
[1] "Highschool" "Not highschool" "Highschool"
[1] "Highschool" "Not highschool" "Highschool"
> ifelse(lost$drafted.from.2 %in% c("Academy","H.S."), "Highschool", "Not highschool")
[1] "Not highschool" "Not highschool" "Not highschool"
现在,让我们将这些知识应用于数据帧:
lost$League.1 <- ifelse(lost$drafted.from.1 %in% c("Academy","H.S."), "Highschool", "Not highschool")
lost$League.2 <- ifelse(grepl("Academy|H.S.", lost$drafted.from.2), "Highschool", "Not highschool")
在grep*
中,您使用垂直管道|
进行或-grepl(“Acadamny | H.S.”,x)
(其中x是您正在搜索的数据),您不需要像我所示进行grepl调用。@khrm是的,您需要grep
/grepl
,因为丢失了$Drafted.
可以包含单词“Academy”或“H.S”@这是一个非常简单的问题。不需要grep。我的问题给了我正确的答案。你也可以使用grep。但我通常在使用正则表达式时使用它。@khrm它取决于对“contains”一词的解释。请参阅我的答案以获得解释。