r - 无法找到唯一值
问题描述
我对唯一命令有疑问。当我为每个变量运行唯一时,我没有问题,但是当我尝试运行多个变量时,我遇到了麻烦。
这是我的数据库:
structure(list(M1 = c("AMZN PE Equity", "ANDAHUC1 PE", "ANDAHUC1 PE",
"ANDAHUC1 PE", "ANDAHUC1 PE", "ANDAHUC1 PE", "ANDAHUC1 PE", "ALICPRLl1 Pe Equity",
"ALICPRLl1 Pe Equity", "ALICPRLl1 Pe Equity", "ALICPRLl1 Pe Equity",
"ALICPRLl1 Pe Equity", "ALICPRLl1 Pe Equity"), M2 = c("AMZN PE Equity",
"ANDAHUC1 PE", "ANDAHUC1 PE", "ANDAHUC1 PE", "ANDAHUC1 PE", "ANDAHUC1 PE",
"ALICPRLl1 Pe Equity", "ALICPRLl1 Pe Equity", "ALICPRLl1 Pe Equity",
"ALICPRLl1 Pe Equity", "ALICPRLl1 Pe Equity", "ALICPRLl1 Pe Equity",
"ALICPRLl1 Pe Equity")), row.names = c(NA, 13L), class = "data.frame")
两个变量(M1,M2)具有相同的特征,但以不同的比例重复(ALICPRLl1 Pe Equity 在 M1 中重复了 6 次,但在 M2 中重复了 7 次)。
这是我的多个变量的代码:
morethan1<- unique(testrep[c("M1", "M2")])
这是我的输出:
M1 M2
1 AMZN PE Equity AMZN PE Equity
2 ANDAHUC1 PE ANDAHUC1 PE
7 ANDAHUC1 PE ALICPRLl1 Pe Equity
8 ALICPRLl1 Pe Equity ALICPRLl1 Pe Equity
如您所见,还有一些重复的名称。
这是我的一个变量的代码:
just1 <- unique(testrep[c("M1")])
在这种情况下我没有问题:
M1
1 AMZN PE Equity
2 ANDAHUC1 PE
8 ALICPRLl1 Pe Equity
我也有数字(1、2、8),我希望数字按顺序出现(1、2 3)
最后,如果我有 100 列(M1 到 M100),我该如何修改我的第一个代码(M1:M00)?
另一种方式:
bothvariables <- subset(unique(testrep), M1 != M2)
这是我的输出:
M1 M2
7 ANDAHUC1 PE ALICPRLl1 Pe Equity
但我想要这个输出:
M1 M2
AMZN PE Equity AMZN PE Equity
ANDAHUC1 PE ANDAHUC1 PE
ALICPRLl1 Pe Equity ALICPRLl1 Pe Equity
无论名称是否在 M1、M2 中重复不同次数,我都想要一个输出来显示 M1 和 M2 列中的唯一名称。
现在我再尝试一列:M3
这是我的新数据库:
structure(list(M1 = c("AMZN PE Equity", "ANDAHUC1 PE", "ANDAHUC1 PE",
"ANDAHUC1 PE", "ANDAHUC1 PE", "ANDAHUC1 PE", "ANDAHUC1 PE", "ALICPRLl1 Pe Equity",
"ALICPRLl1 Pe Equity", "ALICPRLl1 Pe Equity", "ALICPRLl1 Pe Equity",
"ALICPRLl1 Pe Equity", "ALICPRLl1 Pe Equity"), M2 = c("AMZN PE Equity",
"ANDAHUC1 PE", "ANDAHUC1 PE", "ANDAHUC1 PE", "ANDAHUC1 PE", "ANDAHUC1 PE",
"ALICPRLl1 Pe Equity", "ALICPRLl1 Pe Equity", "ALICPRLl1 Pe Equity",
"ALICPRLl1 Pe Equity", "ALICPRLl1 Pe Equity", "ALICPRLl1 Pe Equity",
"ALICPRLl1 Pe Equity"), M3 = c("AMZN PE Equity", "AMZN PE Equity",
"AMZN PE Equity", "ANDAHUC1 PE", "ANDAHUC1 PE", "ANDAHUC1 PE",
"ALICPRLl1 Pe Equity", "ALICPRLl1 Pe Equity", "ALICPRLl1 Pe Equity",
"ALICPRLl1 Pe Equity", "ALICPRLl1 Pe Equity", "ALICPRLl1 Pe Equity",
"ALICPRLl1 Pe Equity")), row.names = c(NA, 13L), class = "data.frame")
这是代码:
testrep %>%
distinct(M1, .keep_all = TRUE)
This is the output:
M1 M2 M3
1 AMZN PE Equity AMZN PE Equity AMZN PE Equity
2 ANDAHUC1 PE ANDAHUC1 PE AMZN PE Equity
3 ALICPRLl1 Pe Equity ALICPRLl1 Pe Equity ALICPRLl1 Pe Equity
我现在也有同样的问题,只是因为我添加了一个新列。
这是我的预期输出:
M1 M2 M3
1 AMZN PE Equity AMZN PE Equity AMZN PE Equity
2 ANDAHUC1 PE ANDAHUC1 PE ANDAHUC1 PE
3 ALICPRLl1 Pe Equity ALICPRLl1 Pe Equity ALICPRLl1 Pe Equity
解决方案
我们可以用paste
testrep[paste0("M", 1:100)]
或与startsWith
testrep[startsWith(names(testrep), "M")]
或使用grep
testrep[grep("^M\\d+$", names(testrep))]
关于行号问题,可以设置NULL
为获取默认编号
row.names(just1) <- NULL
我们可以distinct
使用.keep_all
library(dplyr)
testrep %>%
distinct(M1, .keep_all = TRUE)
# M1 M2
#1 AMZN PE Equity AMZN PE Equity
#2 ANDAHUC1 PE ANDAHUC1 PE
#3 ALICPRLl1 Pe Equity ALICPRLl1 Pe Equity
我们可以得到unique
来自。每列分别然后unnest
它
library(tidyr)
testrep2 %>%
summarise_all(list(~ list(unique(.)))) %>%
unnest(everything())
# A tibble: 3 x 3
# M1 M2 M3
# <chr> <chr> <chr>
#1 AMZN PE Equity AMZN PE Equity AMZN PE Equity
#2 ANDAHUC1 PE ANDAHUC1 PE ANDAHUC1 PE
#3 ALICPRLl1 Pe Equity ALICPRLl1 Pe Equity ALICPRLl1 Pe Equity
推荐阅读
- typescript - GitLab Web IDE 中 TypeScript 中的重复标识符“匹配”
- python - Python变量没有改变
- objective-c - 如何在Objective C中组合数组字典中的两个键值
- javascript - TurboTable 标题复选框选择所有页面中的所有数据,而不仅仅是当前页面
- visual-studio-code - 使用 dotnet run 在 VS Code 中启动 .NET Core 项目
- r - 在R中保持小于大于实数的行
- javascript - 灯箱标题区域太窄
- csv - Sublime Text Advanced CSV 自动对齐
- sql - MS Access VBA / SQL 电子邮件功能
- javascript - 在 Slick Carousel div 中使用背景图像(响应式)