如何计算R中特定单元格的数据帧中的行数

时间:2015-08-07 18:46:42

标签: r dataframe histogram

我在此之前问了一个类似的问题:How to calculate percentage of cells in data frame that start with sequence in R?

我会将其中的一部分复制一下以询问新问题。

我的数据看起来像:

Set_1     Set_2     Set_3     Set_4     Set_5     Set_6     Set_7
abc89     abc62     67        abc513    abc512    abc81     abc10
abc6      pop       abc11     abc4      giant     13        abc15
abc90     abc16     abc123    abc33     abc22     abc08     9
111       abc15     abc72     abc36     abc57     abc9      abc55

我想制作行数的直方图。我只想计算以" abc"开头的单元格。因此第1行将有6个单元格。第2行有4个单元格。第3行有6个单元格等。我想制作一个直方图。如何在R中完成?目前,我的数据位于data.frame中。

2 个答案:

答案 0 :(得分:2)

您可以使用

计算每行中以“abc”开头的条目数
y <- apply(df, 1, function(x) sum(grepl("^abc", x)))
#> y 
#[1] 6 4 6 6 

可以使用

在直方图中绘制此结果
hist(y, breaks=c(1:max(y)), main = "Frequency of 'abc' entries", col="lightblue")

enter image description here

如果您更喜欢每行“abc”计数值的图形表示,则可以使用barplot()代替hist()

barplot(y, main = "Number of 'abc' entries in each row",col="lightblue")

enter image description here

数据

text <- "Set_1     Set_2     Set_3     Set_4     Set_5     Set_6     Set_7
abc89     abc62     67        abc513    abc512    abc81     abc10  
abc6      pop       abc11     abc4      giant     13        abc15
abc90     abc16     abc123    abc33     abc22     abc08     9
111       abc15     abc72     abc36     abc57     abc9      abc55"
df <- read.table(text=text, header=T)

答案 1 :(得分:1)

使用tidyrdplyr和基础R hist

x <- data.frame(Set_1 = c("abc89", "abc6", "abc90", 111), 
            Set_2 = c("abc62", "pop", "a16", "abc15"), 
            Set_3 = c(67, "abc11", "abc123", "abc72"), 
            Set_4 = c("abc513", "abc4", "abc33", "abc36"),      stringsAsFactors=F)

require(tidyr)
require(dplyr)

x %>% 
  gather(Set, val) %>%
  group_by(Set) %>%
  summarise(count=sum(grepl("^abc", val))) %>%
  .$count %>%
  hist

抱歉,我无法附加图像输出。