R 如何删除重复的成对列
考虑以下数据帧:R 如何删除重复的成对列,r,R,考虑以下数据帧: df <- data.frame(V1 = c("A", "A", "B", "B", "C", "C"), V2 = c("B", "C", "A", "C", "A", "B"), n = c(1, 3, 1, 2, 3, 2)) 我尝试了unique()和duplicated()但没有效果。不确定这是否是最简单的方法(转置可能在计算上很昂贵),但这将适用于您的数据帧: df <- data.frame(V1 = c
df <- data.frame(V1 = c("A", "A", "B", "B", "C", "C"),
V2 = c("B", "C", "A", "C", "A", "B"),
n = c(1, 3, 1, 2, 3, 2))
我尝试了
unique()
和duplicated()
但没有效果。不确定这是否是最简单的方法(转置可能在计算上很昂贵),但这将适用于您的数据帧:
df <- data.frame(V1 = c("A", "A", "B", "B", "C", "C"),
V2 = c("B", "C", "A", "C", "A", "B"),
n = c(1, 3, 1, 2, 3, 2))
如果您的列名和顺序很重要,您必须重新建立它们
names(df) <- c("n", "V1", "V2")
df <- df[, c("V1", "V2", "n")]
names(df)不确定这是否是最简单的方法(转置可能在计算上很昂贵),但这将适用于您的数据帧:
df <- data.frame(V1 = c("A", "A", "B", "B", "C", "C"),
V2 = c("B", "C", "A", "C", "A", "B"),
n = c(1, 3, 1, 2, 3, 2))
如果您的列名和顺序很重要,您必须重新建立它们
names(df) <- c("n", "V1", "V2")
df <- df[, c("V1", "V2", "n")]
names(df)另一个选项是将数据集(xtabs(n~…)
)重新格式化为宽格式,将下三角矩阵设置为0,并删除“Freq”等于0的行
m1 <- xtabs(n~V1+V2, df)
m1[lower.tri(m1)] <- 0
subset(as.data.frame(m1), Freq!=0)
# V1 V2 Freq
#4 A B 1
#7 A C 3
#8 B C 2
m1另一个选项是将数据集(xtabs(n~…)
)重新格式化为宽格式,将下三角矩阵设置为0,并删除“Freq”等于0的行
m1 <- xtabs(n~V1+V2, df)
m1[lower.tri(m1)] <- 0
subset(as.data.frame(m1), Freq!=0)
# V1 V2 Freq
#4 A B 1
#7 A C 3
#8 B C 2
m1这看起来很相似:@thelatemail它很相似,甚至可能是重复的。另一个问题写得更清楚——它更清楚需要什么。这个问题应该被编辑以显示真实意图(或者以重复或不清楚的形式结束)。这看起来很相似:@thelatemail它很相似,甚至可能是重复的。另一个问题写得更清楚——它更清楚需要什么。应编辑此问题以显示真实意图(或以重复或不清楚的形式关闭)。