首页 > 解决方案 > R中的For-If循环操作

问题描述

我正在尝试在 R 上复制一个非常简单的 VBA 代码,以识别重复项。我的目标是确定样本集中有多少组重复项,首先是跨行向下读取,然后跨列读取。所以我想出了这个样本:

x<-matrix(data=c("Ali","Ali","Abu","Ali","Ahmad","siti","Ali","Abu", "Ahmad", "Ali", "Abu", "Aisyah", "Khalid", "Robin","Ahmad","Ali","JOrdan","siti"), nrow=6)
x<-data.frame(x)

colnames(x)<-c("nama1","nama2","nama3")

所以你会得到这样的东西

 nama1  nama2  nama3
1   Ali    Ali Khalid
2   Ali    Abu  Robin
3   Abu  Ahmad  Ahmad
4   Ali    Ali    Ali
5 Ahmad    Abu JOrdan
6  siti Aisyah   siti

所以我想做的基本上是:

c<-0
for (i in x){
    if (x[i,1]==x[i+1,1]){
        c=c+1
        }
    print c
    }

我想要的最终输出是指定每行中有多少重复项,然后在列中执行它......比如

 for i=1 to 10
 for j=1 to 20
        cells(i,j)="XXX"
        do this
 next j
 next i

问题是我不知道如何在 R 中指定单个单元格,例如。在 VBA 中你可以做 cells(i+1,1)=cells(i,1).. 我正在学习在 R 中做非常简单的数据操作。

我想在最后总结所有列的 c 值。所以应该是 4+4+6=14。

欢迎任何建议!谢谢

标签: rfor-loopif-statement

解决方案


#row total number of duplicates
apply(x, 1, function(x) length( x[ duplicated(x) ] ) )
#[1] 1 0 1 2 0 1

#column total number of duplicates
apply(x, 2, function(x) length( x[ duplicated(x) ] ) )
#nama1 nama2 nama3 
#    2     2     0 

推荐阅读