我想在r中使用ifelse语句对变量进行类似的case语句。例如,假设我在以下数据框中有以下列向量'Letter_Test':
Alpha - 测试,Beta测试,Zeta测试,Alpha-Two,Beta-Two
我想写一个声明,基本上说数据是Alpha,然后是'Alpha',否则返回列结果。
在SQL中(例如,当Letter_Test LIKE'%Alpha%'那么Alpha else''Letter-Test'结束时)。
答案 0 :(得分:1)
实际上不确定我的问题是否正确,但如果你的意思是你想测试是否" Alpha"在Letter-Test专栏中,然后就可以了:
> df <- data.frame("Letter-Test" = c("Alpha - Test", "Beta- Test", "Zeta-Test", "Alpha-Two", "Beta-Two"),
+ stringsAsFactors = FALSE)
>
> ifelse(test = grepl("Alpha", df$Letter.Test), yes = "Alpha", no = df$Letter.Test)
[1] "Alpha" "Beta- Test" "Zeta-Test" "Alpha" "Beta-Two"
Test为TRUE和FALSE,如果在Letter.Test列中找到单词,则grepl返回TRUE。
或者您可以将结果直接放入数据框中的新列:
> df$AplhaTest <- ifelse(test = grepl("Alpha", df$Letter.Test), yes = "Alpha", no = df$Letter.Test)
> df
Letter.Test AplhaTest
1 Alpha - Test Alpha
2 Beta- Test Beta- Test
3 Zeta-Test Zeta-Test
4 Alpha-Two Alpha
5 Beta-Two Beta-Two
答案 1 :(得分:1)
使用case_when() 和%喜欢%谓词。
case_when(
species %like% "Alpha" ~ "Alpha",
TRUE ~ "Alpha"
)
答案 2 :(得分:0)
一个选项:
new_thing <- ifelse("Alpha" %in% df$Letter_Test, "Alpha", "Letter-Test")
另一种选择:
new_thing2 <- gsub(".*(Alpha).*", "\\1", df$Letter_Test)
答案 3 :(得分:0)
如Rahim所说: 使用case_when()和%like%谓词。
case_when(
species %like% "Alpha" ~ "Alpha",
TRUE ~ "Beta"
)
我想向JD Longs添加评论(不允许对此发表评论): %like%似乎来自DescTools软件包 https://www.rdocumentation.org/packages/DescTools/versions/0.99.30/topics/%25like%25