gpt4 book ai didi

R:根据两列的相似性检查删除列

转载 作者:行者123 更新时间:2023-12-04 16:55:50 25 4
gpt4 key购买 nike

输入

row.no   column2    column3  column4
1 bb ee up
2 bb ee down
3 bb ee up
4 bb yy down
5 bb zz up

我有一个规则来删除第 1 行、第 2 行和第 3 行,因为第 1、2 和 3 行的 column2 和 column3 是相同的,但在列中发现了矛盾的数据( up down) 4.

我如何要求 R 删除 column2 和 column3 中具有相同名称的行,但收缩第 3 列以生成如下矩阵:
row.no   column2    column3  column4
4 bb yy down
5 bb zz up

最佳答案

包中的函数 plyr真的很擅长解决这类问题。这是使用两行代码的解决方案。

设置数据(由@GavinSimpson 友情提供)

dat <- structure(list(row.no = 1:5, column2 = structure(c(1L, 1L, 1L, 
1L, 1L), .Label = "bb", class = "factor"), column3 = structure(c(1L,
1L, 1L, 2L, 3L), .Label = c("ee", "yy", "zz"), class = "factor"),
column4 = structure(c(2L, 1L, 2L, 1L, 2L), .Label = c("down",
"up"), class = "factor")), .Names = c("row.no", "column2",
"column3", "column4"), class = "data.frame", row.names = c(NA,
-5L))

加载 plyr包裹
library(plyr)

使用 ddply拆分,分析和组合数据。以下代码行分析将 dat 分别拆分为 (column2 和 column3) 的唯一组合。然后我添加一个名为 unique 的列,它计算每个集合的 column4 的唯一值的数量。最后,使用一个简单的子集只返回那些 unique==1 的行,并删除第 5 列。
df <- ddply(dat, .(column2, column3), transform, 
row.no=row.no, unique=length(unique(column4)))
df[df$unique==1, -5]

结果:
  row.no column2 column3 column4
4 4 bb yy down
5 5 bb zz up

关于R:根据两列的相似性检查删除列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5691625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com