我对唯一命令有疑问。当我为每个变量运行唯一变量时,我没有问题,但是当我尝试运行多个变量时,我会遇到麻烦。
这是我的数据库:
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中重复六次,在M2中重复七次)。
这是我的多个变量代码:
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
答案 0 :(得分:1)
我们可以使用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