如何计算数据框中以 R 中的序列开头的单元格百分比?
How to calculate percentage of cells in data frame that start with sequence in R?
我的数据如下:
Row 1 Row 2 Row 3 Row 4 Row 5 Row 6 Row7
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" 开头的单元格的百分比。例如:这里总共有 28 个单元格。这可以通过 prod(dim(df))
获得。所以我需要以 "abc" 开头的单元格数量,然后除以 prod(dim(df))
。这里的答案是 0.785。如何在 R 中完成?
您可以使用grep
搜索感兴趣的模式(以"abc"开头的字符串):
length(grep("^abc", as.character(unlist(dat)))) / prod(dim(dat))
# [1] 0.7857143
您可以通过以下方式获取行数:
(row.counts <- apply(dat, 1, function(x) length(grep("^abc", as.character(x)))))
# [1] 6 4 6 6
数据:
dat = read.table(text="Row1 Row2 Row3 Row4 Row5 Row6 Row7
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", header=TRUE)
我会使用:
> mean(grepl("^abc",unlist(dat)))
[1] 0.7857143
使用mean
意味着您不必自己分别获取分子和分母。 grepl
是 grep
的逻辑版本——只要找到 "^abc"
(即以 abc
开头的字符串),它就会 returns TRUE
。 Recall伯努利向量的平均值是成功的百分比。
如果您想按行或按列执行此操作,您可以使用 apply
,例如apply(dat,1,function(x)mean(grepl("^abc",x)))
获取逐行均值。
我的数据如下:
Row 1 Row 2 Row 3 Row 4 Row 5 Row 6 Row7
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" 开头的单元格的百分比。例如:这里总共有 28 个单元格。这可以通过 prod(dim(df))
获得。所以我需要以 "abc" 开头的单元格数量,然后除以 prod(dim(df))
。这里的答案是 0.785。如何在 R 中完成?
您可以使用grep
搜索感兴趣的模式(以"abc"开头的字符串):
length(grep("^abc", as.character(unlist(dat)))) / prod(dim(dat))
# [1] 0.7857143
您可以通过以下方式获取行数:
(row.counts <- apply(dat, 1, function(x) length(grep("^abc", as.character(x)))))
# [1] 6 4 6 6
数据:
dat = read.table(text="Row1 Row2 Row3 Row4 Row5 Row6 Row7
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", header=TRUE)
我会使用:
> mean(grepl("^abc",unlist(dat)))
[1] 0.7857143
使用mean
意味着您不必自己分别获取分子和分母。 grepl
是 grep
的逻辑版本——只要找到 "^abc"
(即以 abc
开头的字符串),它就会 returns TRUE
。 Recall伯努利向量的平均值是成功的百分比。
如果您想按行或按列执行此操作,您可以使用 apply
,例如apply(dat,1,function(x)mean(grepl("^abc",x)))
获取逐行均值。