如何使用R语言统计矩阵的一列中数值等于1的元素个数

Python019

如何使用R语言统计矩阵的一列中数值等于1的元素个数,第1张

上图是一个简单的例子,b为一矩阵,现在想统计第二列中数值等于1的元素个数,首先做一个逻辑判断,即b[,2]==1,得到一个由布尔变量true和false组成的向量

此时只需要知道true的数量,由于对布尔变量求和,true转化为1,false转化为0,故对该向量求和即可得到true的数量,即b[,2]中等于1的数量。

#

在1到80里随机抽取100个数,可重复

x

<-

sample(1:80,

100,

replace

=

T)

#

看看有多少不同的元素,

unique(x)把x中出现过的元素提取出来,

length()看看有多少个

length(unique(x))

[1]

52

其基本思想就是把百分数按照字符处理,首先将“%”与数字分离,然后再将数除以100,就可以化成小数了。下面两种方法的区别一个是将%替换成空格,一个是提取除百分号的数字。>testdata<-data.frame(v1=c("78%", "65%", "32%"), v2=c("43%", "56%", "23%"))>testnewdata1<-data.frame(lapply(testdata, function(x) as.numeric(sub("%", "", x))/100) )>testnewdata1v1 v21 0.78 0.432 0.65 0.563 0.32 0.23>library(stringr)>testnewdata2<-data.frame(lapply(testdata, function(x) as.numeric(str_extract(x,'[0-9.]+'))/100) )>testnewdata2v1 v21 0.78 0.432 0.65 0.563 0.32 0.23 替换百分号的思想还可以用下面的代码实现>testnewdata3<-data.frame(lapply(testdata, function(x) as.numeric(gsub("\\%", "", x))/100))>testnewdata3v1 v21 0.78 0.432 0.65 0.563 0.32 0.23