[英]How do I divide rows by the row sum and rows that meet a certain condition (row Sum >100)in matrix?r
我有一個矩陣,我嘗試在行總和的末尾添加一列,然后將行除以行總和,條件是行總和大於100。這是我到目前為止的結果:
row.sums <- rowSums(a)
a <- cbind(a, row.sums)
這給了我想要的初始矩陣,在Sums行的末尾有一列。 以下代碼是我嘗試第二步的代碼:
a[(a[,dim(a)]>100)] <- dtm/row.sums
這給我一個錯誤,說我要替換的向量的大小與我要替換的向量不匹配。 我在這里做錯了什么? 抱歉,如果這是一個非常基本的問題,我通常對R /編碼還很陌生。
這可能是一個冗長的解決方案,但它可以工作。
df <- cbind(df, rowSums(df))
a <- df[, dim(df)[2]]
for(i in 1:length(a))
{
if(a[i] > 100)
{
df[i, ] <- df[i, ]/a
}
}
#> df
# [,1] [,2] [,3] [,4] [,5] [,6] [,7]
# x 0.03333333 0.050 0.1000000 0.100 0.1666667 0.375 1.000000
# y 0.06666667 0.075 0.1333333 0.125 0.2000000 0.500 1.333333
x <- c(100,200,300,400,500)
y <- c(200,300,400, 500, 600)
df <- rbind(x, y)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.