【问题标题】:How to calculate row counts in dataframe of specific cells in R [closed]如何计算R中特定单元格的数据框中的行数[关闭]
【发布时间】:2015-10-31 07:22:18
【问题描述】:

我之前在这里问过一个类似的问题: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 中。

【问题讨论】:

  • 不清楚您在问什么,可能是因为您将列标记为行。
  • @Webb,我真傻。现在有意义吗?

标签: r dataframe histogram


【解决方案1】:

你可以统计每行中以“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")

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

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

数据

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)

【讨论】:

    【解决方案2】:

    使用 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
    

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

    【讨论】:

      猜你喜欢
      • 2014-09-25
      • 2022-10-18
      • 2014-08-24
      • 2020-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多