1
喜相對於更換行了這裏的問題: [Dynamically replace row in dataframe with vector在數據幀與狀態
我有例如data.frame:
d <- read.table(text=' V1 V2 V3 V4 V5 V6 V7
1 1 a 2 3 4 9 6
2 1 b 2 2 4 5 NA
3 1 c 1 3 4 5 8
4 1 d 1 2 3 6 9
5 2 a 1 2 3 4 5
6 2 b 1 4 5 6 7
7 2 c 1 2 3 5 8
8 2 d 2 3 6 7 9', header=TRUE)
現在我要帶一個排,爲例如第一個(1a)和:
從該行獲取最小值和最大值。在這種情況下,min = 2和max = 9(注意在中間缺少值,例如該行中沒有5,7或8)。
現在我想用所有缺少的值替換該行並對其進行擴展(該行將比所有其他行更長,因爲它將從2到9(2,3,4,5,6,7,8, 。9)整個data.frame然後應自動NA列對於不是隻要一個I替換其他行擴展
現在下面的代碼並實現這一點:
row.to.change <- 1
(new.row <- seq(min(d[row.to.change,c(-1, -2)], na.rm=TRUE), max(d[row.to.change,c(-1,-2)], na.rm=TRUE)))
(num.add <- length(new.row) - ncol(d) + 2)
# [1] 3
if (num.add > 0) {
d <- cbind(d, replicate(num.add, rep(NA, nrow(d))))
} else if (num.add <= 0) {
new.row <- c(new.row, rep(NA, -num.add))
}
並最終將擴展data.frame標題重命名爲默認值:
d[row.to.change,c(-1, -2)] <- new.row
colnames(d) <- paste0("V", seq_len(ncol(d)))
現在:這對我在row.to.replace中指定的行起作用,但是如何工作,例如我想讓它適用於第二列有'b'的所有行?像這樣:「做這個地方D $ V2 =='B'」?如果data.frame長度爲5000行。
這將做到所有的行,但我希望它僅用於例如列V2中有'b'的行。 –
在應用'rtc'之前驗證所需的條件。請參閱評論編輯。 – Robert