【发布时间】:2014-08-27 11:49:06
【问题描述】:
我想使用一些映射函数来转换给定列的值。示例:
df <- data.frame(A = 1:5, B = sample(1:20, 10))
df
A B
1 1 17
2 2 5
3 3 3
4 4 11
5 5 19
6 1 16
7 2 4
8 3 7
9 4 6
10 5 9
我的目标是将 A 列的所有元素映射如下:
1 -> "tt"
2 -> "ff"
3 -> "ss"
4 -> "fs"
5 -> "sf"
我写了以下内容:
mappingList <- c("tt", "ff", "ss", "fs", "sf")
df$A <- unlist(lapply(df$A, function(x){replace(x, x>0, mappingList[x])}))
df
A B
1 tt 17
2 ff 5
3 ss 3
4 fs 11
5 sf 19
6 tt 16
7 ff 4
8 ss 7
9 fs 6
10 sf 9
上面的代码运行良好。
现在让我们假设另一个数据框,其中 A 列不是由整数 1、2、3、4、5 组成,而是由任何其他“通用”项组成,比如:
df <- data.frame(A = paste("str",1:5,sep=""), B = sample(1:20, 10))
或
df <- data.frame(A = seq(5, 25, by=5), B = sample(1:20, 10))
问题:您将如何编写映射?
【问题讨论】:
标签: r replace map dataframe transform