首页 > 解决方案 > 计算数据框相似行

问题描述

我是 R 新手。我有一个数据框(New1)包含 400 行和 5 列。这是一个例子:

A   B   C   D   E
0   0   0   0   0
0   0   0   0   1
0   0   0   0   2
0   0   0   1   0
0   0   0   1   1
0   0   0   1   2
0   0   0   2   0
0   0   0   2   1

我想添加一个发生相同事件数量的新列。例如此表中 (A=0, B=0, C=0, D=0, E=0) 的事件数为 0。则事件数 (A=0, B=0, C=0, D =0, E=1) 在此表 1. 中,依此类推。

这在R中可行吗?

标签: rmatrix

解决方案


#sample Mat

Mat <-structure(c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
                0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 
                1L, 2L, 2L, 0L, 1L, 2L, 0L, 1L, 2L, 0L, 1L), .Dim = c(8L, 5L), .Dimnames = list(
                  NULL, NULL))

library(dplyr, warn.conflicts = F)

Mat
#>      [,1] [,2] [,3] [,4] [,5]
#> [1,]    0    0    0    0    0
#> [2,]    0    0    0    0    1
#> [3,]    0    0    0    0    2
#> [4,]    0    0    0    1    0
#> [5,]    0    0    0    1    1
#> [6,]    0    0    0    1    2
#> [7,]    0    0    0    2    0
#> [8,]    0    0    0    2    1

Mat %>% as.data.frame() %>% setNames(LETTERS[1:ncol(.)]) %>%
  mutate(total = rowSums(cur_data()))
#>   A B C D E total
#> 1 0 0 0 0 0     0
#> 2 0 0 0 0 1     1
#> 3 0 0 0 0 2     2
#> 4 0 0 0 1 0     1
#> 5 0 0 0 1 1     2
#> 6 0 0 0 1 2     3
#> 7 0 0 0 2 0     2
#> 8 0 0 0 2 1     3

根据评论中的要求,保存 csv 使用 write.csv

Mat %>% as.data.frame() %>% setNames(LETTERS[1:ncol(.)]) %>%
  mutate(total = rowSums(cur_data())) %>%
  write.csv('path\\filename.csv')


推荐阅读