加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-14 04:35:17 所属栏目:大数据 来源:网络整理
导读:输入 row.no column2 column3 column41 bb ee up2 bb ee down3 bb ee up4 bb yy down5 bb zz up 我有一条规则要删除第1行,第2行和第3行,因为第1行,第2行和第3行的第2列和第3列是相同的,第4列中找到了相互矛盾的数据(向上和向下). 如何让R在column2和column3
输入

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行的第2列和第3列是相同的,第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),.Label = "bb",class = "factor"),column3 = structure(c(1L,2L,3L),.Label = c("ee","yy","zz"),column4 = structure(c(2L,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.以下代码行分析将dat分别拆分为(column2和column3)的唯一组合.然后我添加一个名为unique的列,它计算每个set4的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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读