在R中用另一个替换数据帧的一组值

时间:2015-05-08 15:19:09

标签: r dataframe data-manipulation

假设我有一个dim 200 * 100的数据框(X),其中每个元素都是1到20之间的任何值。我有另一个数据框(Y),其中第一列是1:18,第二列是一组字符(例如:a,d,a,c,b,b,d,c,... b,c,d){注意只有四个不同的字符a,b,c,d)

我们需要用Y中的相应值替换X的每个元素。这意味着输出应该是一个新的数据框XX,其中每个元素都是a,b,c,d,19,20之外的任何元素。

此外,我们可以通过操纵来替换a,b,c,d中的任何东西吗?

2 个答案:

答案 0 :(得分:0)

尝试:

x <- as.data.frame(matrix(sample(1:20,200*100,TRUE),200,100))
y <- data.frame(1:20,c(sample(letters[1:4],18,TRUE),19,20))
apply(x,1,function(e) y[match(e,y[,1]),2])

答案 1 :(得分:0)

您可以直接替换值

X[X < 19] <- as.character(Y[X[X < 19],2])

请注意,您要将X列转换为字符。

据我了解&#34;通过操作&#34;,你可以用以下内容更改19,20个值:

X[X == 19] <- 'c'
X[X == 20] <- 'a'