我有一个根据用户输入动态生成的数据框架.假设有两个数据帧:
df1 <- data.frame(A=c(1,2,1,4),
B=c(4,3,4,1),
C=c(3,2,3,4),
Y=c(2,7,6,3),
Z=c(5,8,9,10))
df2 <- data.frame(A=c(1,2,1,4),
B=c(4,3,4,1),
C=c(3,2,3,4),
D=c(2,1,2,3),
Y=c(2,7,6,3),
Z=c(5,8,9,10))
行号3是基于列A、B、C和D(用于df2)的行号1的副本.我知道通常情况下我可以用
library(dplyr)
df1 |> distinct(A,B,C, .keep_all=TRUE)
df2 |> distinct(A,B,C,D, .keep_all=TRUE)
但问题是列A-D是动态生成的.可能是A列和B列,可能是A-F列...唯一的常量是列Y和Z.有没有一种方法可以使用distinct()
,但除了Y和Z之外的所有列?
我想把列名放到一个列表中,删除两个变量,然后将其替换到不同的调用中
names <- colnames(df2)
names <- names[names != c("Y", "Z")]
df2 |> distinct(names, .keep_all=TRUE)
但当然,它正在寻找一个名为"名字"的栏目.任何帮助都将不胜感激.