我有一个dataframe
,我想使用另一个dataframe
来替代其某些值,而我自己拥有row
,column
和value
信息。
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
答案 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