Case When LIKE 等效于 R
Case When LIKE equivalent in R
我想使用 ifelse 语句对变量执行类似于 r 中的 case 语句。例如,假设我在数据框中有以下列向量 'Letter_Test':
Alpha-测试、Beta-测试、Zeta-测试、Alpha-2、Beta-2
我想写一个声明,基本上说如果数据像 Alpha 那么 'Alpha',否则 return 列结果。
在 SQL 中会是(CASE WHEN Letter_Test LIKE '%Alpha%' THEN Alpha else 'Letter-Test' end)。
一个选项:
new_thing <- ifelse("Alpha" %in% df$Letter_Test, "Alpha", "Letter-Test")
另一个选项:
new_thing2 <- gsub(".*(Alpha).*", "\1", df$Letter_Test)
实际上不确定我是否答对了问题,但如果你的意思是你想测试 "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"
测试采用 TRUE 和 FALSE,grepl returns 如果在列 Letter.Test.
中找到该词则为 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
使用 case_when()
和 %like% 谓词。
case_when(
species %like% "Alpha" ~ "Alpha",
TRUE ~ "Alpha"
)
正如 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
我想使用 ifelse 语句对变量执行类似于 r 中的 case 语句。例如,假设我在数据框中有以下列向量 'Letter_Test':
Alpha-测试、Beta-测试、Zeta-测试、Alpha-2、Beta-2
我想写一个声明,基本上说如果数据像 Alpha 那么 'Alpha',否则 return 列结果。
在 SQL 中会是(CASE WHEN Letter_Test LIKE '%Alpha%' THEN Alpha else 'Letter-Test' end)。
一个选项:
new_thing <- ifelse("Alpha" %in% df$Letter_Test, "Alpha", "Letter-Test")
另一个选项:
new_thing2 <- gsub(".*(Alpha).*", "\1", df$Letter_Test)
实际上不确定我是否答对了问题,但如果你的意思是你想测试 "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"
测试采用 TRUE 和 FALSE,grepl returns 如果在列 Letter.Test.
中找到该词则为 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
使用 case_when() 和 %like% 谓词。
case_when(
species %like% "Alpha" ~ "Alpha",
TRUE ~ "Alpha"
)
正如 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