r - R中的条件不同行
问题描述
我有一个数据框,我想将所有不同的字符串条目(即删除重复项)保留在一个列中,除非这些条目很短,str_length < 7。我还想保留所有其他列。
所以我有
细绳 | 其他栏目 |
---|---|
“ABC” | |
“ABC” | |
“半人马” | |
“半人马” | |
“世界末日” | |
“世界末日” | |
“意大利面” |
期望的输出:
细绳 | 其他栏目 |
---|---|
“ABC” | |
“ABC” | |
“半人马” | |
“世界末日” | |
“意大利面” |
我尝试了各种 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))
推荐阅读
- aws-appsync - 检查 AWS Appsync 是否连接到端点套接字
- python - 我怎样才能漂亮地打印一个 nltk 树对象?
- gcc - GCC 是否有充分的理由生成跳转以跳过一条廉价指令?
- json - 在 Kotlin 中使用可变列表持久化 JSON
- php - 我需要一个 foreach (json) 的参数
- angular - 如何在Angular 6中映射数据定义数组和原始数据数组
- python - 增强或增加图像的饱和度
- alexa - 从 LaunchIntent 向用户询问输入
- c# - “此 MariaDB 版本不允许使用的命令”
- jquery - 使用 ajax 引导标签输入和预先输入