基于参考行的数据帧行的正确值
Correct values of data-frame rows based on reference row
我有一个包含 K
列的大型数据框,其中在未知列索引中我有字符“X”。我希望也用 K
列替换基于参考行的一些值。
我可以使用 for
循环轻松完成:
ref_r = mu_df[1, ]
for (n in row.names(mu_df)) {
idx = which(mu_df[n, ] == "X")
mu_df[n, idx] = ref_r[idx]
}
以上代码找到“X”出现的索引,并将它们替换为 ref_row
.
中相同位置的值
我想对其进行优化,我曾考虑使用 apply
系列中的一款,但我无法改进任何东西。
一个例子是:
mu_df = data.frame(c1=c("A", "-", "X", "-", "B"), c2=c("I", "G", "R", "X", "S"), c3=c("-", "K", "-", "-", "B"), c4=c("Q", "-", "L", "-", "X"), row.names = c("t1", "t2", "t3", "t4", "t5"))
预期的输出是:
c1 c2 c3 c4
t1 A I - Q
t2 - G K -
t3 A R - L
t4 - I - -
t5 B S B Q
我如何优化它,因为我必须以这种方式处理数千个这样的数据帧?
非常感谢您的帮助。
我们可以使用 which
和 arr.ind = TRUE
得到 row/column 每个值的索引 'X'
.
ref_r <- unlist(mu_df[1, ])
mat <- which(mu_df == 'X', arr.ind = TRUE)
mu_df[mat] <- ref_r[mat[, 2]]
# c1 c2 c3 c4
#t1 A I - Q
#t2 - G K -
#t3 A R - L
#t4 - I - -
#t5 B S B Q
我有一个包含 K
列的大型数据框,其中在未知列索引中我有字符“X”。我希望也用 K
列替换基于参考行的一些值。
我可以使用 for
循环轻松完成:
ref_r = mu_df[1, ]
for (n in row.names(mu_df)) {
idx = which(mu_df[n, ] == "X")
mu_df[n, idx] = ref_r[idx]
}
以上代码找到“X”出现的索引,并将它们替换为 ref_row
.
我想对其进行优化,我曾考虑使用 apply
系列中的一款,但我无法改进任何东西。
一个例子是:
mu_df = data.frame(c1=c("A", "-", "X", "-", "B"), c2=c("I", "G", "R", "X", "S"), c3=c("-", "K", "-", "-", "B"), c4=c("Q", "-", "L", "-", "X"), row.names = c("t1", "t2", "t3", "t4", "t5"))
预期的输出是:
c1 c2 c3 c4
t1 A I - Q
t2 - G K -
t3 A R - L
t4 - I - -
t5 B S B Q
我如何优化它,因为我必须以这种方式处理数千个这样的数据帧?
非常感谢您的帮助。
我们可以使用 which
和 arr.ind = TRUE
得到 row/column 每个值的索引 'X'
.
ref_r <- unlist(mu_df[1, ])
mat <- which(mu_df == 'X', arr.ind = TRUE)
mu_df[mat] <- ref_r[mat[, 2]]
# c1 c2 c3 c4
#t1 A I - Q
#t2 - G K -
#t3 A R - L
#t4 - I - -
#t5 B S B Q