1

我有一个包含数据的表,看起来有点像这样:

treatment, species1, species2, ... 
A, 3, 4, ... 
B, 2, 5, ...

我想计算每行的物种数并将计算为新列的数字添加到表中,使其看起来像这样:

treatment, species1, species2, ... , number_of_species
A,         3,        4,        ... , 6
B,         2,        5,        ... , 9

我希望你明白我的目的。由于我是 R 新手,所以我尝试了一段时间并没有发现,因此将不胜感激!

在此先感谢,彼得

4

2 回答 2

4

尝试这样的事情。可能需要进行一些调整以适应您的数据(它有助于为您的问题提供一些示例数据),但这应该可以帮助您完成大部分工作。

# An easy way to make sample data
dat <- data.frame(treatment = letters[1:5],
                  species1 = c(3, 4, 0, 1, 3),
                  species2 = c(2, 1, 0, 0, 7),
                  species3 = c(0, 4, 0, 1, 0))

# First step: dat[ , -1] > 0 indicates which values are greater than zero
# You want to exclude the first column, since that just indicates 
# treatment group
dat[ , -1] > 0

# rowSums counts the number of values > 0 in each row - that's because, in R,
# you can add TRUE values to count them
rowSums(dat[ , -1] > 0)

# Finally, wrap it all up and add it to your data.frame
dat$number_of_species <- rowSums(dat[ , -1] > 0)
于 2013-06-13T18:24:53.640 回答
0

取决于您的表的存储方式(如果它是 的结果,这应该直接工作table,但如果它是数据框或其他结构,则可能需要一些调整),但它可能很简单:

newtable <- addmargins(mytable, 1, FUN = function(x) sum( x > 0 ) )
于 2013-06-13T18:54:00.133 回答