R中的条件不同行
Conditional distinct rows in R
我有一个数据框,我想在其中保留所有不同的字符串条目(即删除重复项)在一列中除非这些条目很短,str_length < 7. 我还想保留所有其他列。
所以我有
string
other columns
"abc"
"abc"
"centauri"
"centauri"
"armageddon"
"armageddon"
"spaghetti"
期望的输出:
string
other columns
"abc"
"abc"
"centauri"
"armageddon"
"spaghetti"
我尝试了多种 dplyr 方法,但没有任何效果。
df <- df %>%
mutate(len = str_length(string))%>%
group_by(string, len) %>%
filter(len >7) %>%
distinct(.keep_all = TRUE)
在这个例子中,我没有取回我过滤掉的行。但我只想保护过滤后的行不受不同函数的影响,然后将它们放回数据框中。
我们可以使用 duplicated
和 nchar
df1[!(duplicated(df1$string) & nchar(df1$string) > 7), , drop = FALSE]
-输出
# string
#1 abc
#2 abc
#3 centauri
#5 armageddon
#7 spaghetti
或 filter
在 dplyr
library(dplyr)
df1 %>%
filter(!(duplicated(string) & nchar(string) > 7))
数据
df1 <- structure(list(string = c("abc", "abc", "centauri", "centauri",
"armageddon", "armageddon", "spaghetti")), class = "data.frame",
row.names = c(NA,
-7L))
我有一个数据框,我想在其中保留所有不同的字符串条目(即删除重复项)在一列中除非这些条目很短,str_length < 7. 我还想保留所有其他列。
所以我有
string | other columns |
---|---|
"abc" | |
"abc" | |
"centauri" | |
"centauri" | |
"armageddon" | |
"armageddon" | |
"spaghetti" |
期望的输出:
string | other columns |
---|---|
"abc" | |
"abc" | |
"centauri" | |
"armageddon" | |
"spaghetti" |
我尝试了多种 dplyr 方法,但没有任何效果。
df <- df %>%
mutate(len = str_length(string))%>%
group_by(string, len) %>%
filter(len >7) %>%
distinct(.keep_all = TRUE)
在这个例子中,我没有取回我过滤掉的行。但我只想保护过滤后的行不受不同函数的影响,然后将它们放回数据框中。
我们可以使用 duplicated
和 nchar
df1[!(duplicated(df1$string) & nchar(df1$string) > 7), , drop = FALSE]
-输出
# string
#1 abc
#2 abc
#3 centauri
#5 armageddon
#7 spaghetti
或 filter
在 dplyr
library(dplyr)
df1 %>%
filter(!(duplicated(string) & nchar(string) > 7))
数据
df1 <- structure(list(string = c("abc", "abc", "centauri", "centauri",
"armageddon", "armageddon", "spaghetti")), class = "data.frame",
row.names = c(NA,
-7L))