簡體   English   中英

R:通過將兩個獨立的向量相乘來填充缺失值(NA)

[英]R: Filling Missing Values (NA) by Multiplying Two Separate Vectors

我的大腦凍結了。

這就是我所擁有的:

C <- c(C1, C2, C3)  # A constant for every row in the data frame
r <- c(r1, r2, r3, r4)   # A ratio for every column in the data frame

我的數據框如下所示:

     1    2    3   4
a   0.7  0.4   NA  NA
b    NA   NA  0.3  NA
c    NA  0.6   NA 0.4

我需要用C和r的乘積來填充NA,使其看起來像這樣:

      1      2     3        4
a    0.7    0.4   C1*r3   C1*r4
b   C2*r1  C2*r2   0.3    C2*r4
c   C3*r1   0.6   C3*r3    0.4

請注意,僅對NA進行乘法運算,而不對已經存在的數字進行乘法運算。 我知道is.na是用來挑選NA的,它可能只是線性代數,但是我的大腦已經is.na一天。 任何幫助都會很棒。

謝謝。

如果mm是您的矩陣,則可以像這樣填充缺失值:

mm[is.na(mm)] <- outer(C,r)[is.na(mm)]

數據示例:

mm <- read.table(text='   1    2    3   4
a   0.7  0.4   NA  NA
b    NA   NA  0.3  NA
c    NA  0.6   NA 0.4')

C <- c(1, 1, 1)  # A constant for every row in the data frame
r <- c(2, 2, 2, 2) 

mm[is.na(mm)] <- outer(C,r)[is.na(mm)]

#    X1  X2  X3  X4
# a 0.7 0.4 2.0 2.0
# b 2.0 2.0 0.3 2.0
# c 2.0 0.6 2.0 0.4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM