【发布时间】:2021-12-02 23:25:44
【问题描述】:
我有两个不同维度的数据框;数据帧 a 和数据帧 b。 我想用数据帧 b 中存储的字段值替换数据帧 a 中的特定字段。我找到了一种方法来过滤我想用来替换数据框 a 的字段的数据框 b 的值。但是,我不知道如何使用条件来索引数据框的特定字段以替换那里的值...有什么建议吗?
df_a <- base::cbind(base::as.data.frame(
base::matrix(c(3, 5, 6, 1, 23, 6, 7, 58, 9), ncol = 3)),
c('bli', 'bla', 'blub'))
# create dataframe a
base::colnames(df_a) <- c('col1', 'col2', 'col3', 'col4')
# set colnames of dataframe a
df_b <- base::as.data.frame(base::matrix(base::seq(1, 27, 3), ncol = 3, byrow = TRUE))
# create dataframe b
repl_val <- df_b[2, 2]
# replace value for dataframe a
spc_col1_val <- 5
# row to index dataframe a: column <col1> should have the value <5>
spc_col <- base::paste0('col', '1')
# column to index dataframe a: the specific column is combined out of different variables e.g. <col> and <3>
df_a[df_a$col1 == spc_col1_val, df_a$spc_col] <- repl_val
# THIS DOES NOT WORK
【问题讨论】:
-
df_b未正确定义。缺少)。但即使您添加)也无法解决问题。df_b将是带有单列的data.frame,这意味着repl_val将是空的,因为没有记录df_b[2, 2]。 -
为什么要“命名空间”基础包?这种风格有什么好处?
-
@Mischa 非常感谢您的评论,我更改了代码以使其有意义。
-
@dario 我正在尝试在 stackoverflow 上“命名空间”所有包以避免混淆。但是,你是对的,在这种情况下它是多余的,因为我没有加载更多的包......
标签: r dataframe variables indexing conditional-statements