R:使用行/列替换另一个数据框的值

时间:2019-04-12 14:31:50

标签: r

我有一个dataframe,我想使用另一个dataframe来替代其某些值,而我自己拥有rowcolumnvalue信息。

dat <- data.frame(Age = c(19,22,32,24),Names = c("Bobby","Mary","Bill","Chuck"), Sport = c("Golf","Tennis","Football","Soccer"))

  Age Names    Sport
   19 Bobby     Golf
   22  Mary   Tennis
   32  Bill Football
   24 Chuck   Soccer

valuesreplace <- data.frame(row = c(1,3), column = c(3,1), value = c("Basketball","18"))

  row column      value
    1      3 Basketball
    3      1         18

结果应为以下内容:

  Age Names      Sport
   19 Bobby Basketball
   22  Mary     Tennis
   18  Bill   Football
   24 Chuck     Soccer

1 个答案:

答案 0 :(得分:2)

我们需要首先将factor转换为character(在构造两个data.frame时使用stringsAsFactors = FALSE),然后使用传递matrix的行/列索引选择'dat'的值,并从'valuesreplace'列'value'中分配值

dat[as.matrix(valuesreplace[1:2])] <- valuesreplace$value
dat
#  Age Names      Sport
#1  19 Bobby Basketball
#2  22  Mary     Tennis
#3  18  Bill   Football
#4  24 Chuck     Soccer