我有16 * 3数据帧。数据帧中的元素是字符,例如A,B,C ...如何在R?中分配它们的值,例如A = 2,B = 5,C = 4
答案 0 :(得分:2)
您可以映射您创建的矢量中的值:
relevel <- function(df, levelmap) {
df[] <- lapply(df, function(x) levelmap[as.character(x)]);df
}
该函数根据地图矢量对值进行子集。
示例强>
df <- data.frame(x=c("A", "C", "C", "A"), y=c("B", "C", "B", "A"), z=c("A", "B", "C", "A"))
df
x y z
1 A B A
2 C C B
3 C B C
4 A A A
newlevels <- c(A=2,B=5,C=4)
relevel(df, newlevels)
x y z
1 2 5 2
2 4 4 5
3 4 5 4
4 2 2 2
newlevels
向量是一个称为命名向量的特殊向量。它非常有用,因为它的名称和索引都可以引用它。 newlevels["A"]
和newlevels[1]
都返回相同的输出。这简化了其他语言中需要哈希表或其他查找数组的内容。