将数值分配给数据框的字符元素

时间:2015-08-04 16:08:36

标签: r

我有16 * 3数据帧。数据帧中的元素是字符,例如A,B,C ...如何在R?中分配它们的值,例如A = 2,B = 5,C = 4

1 个答案:

答案 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]都返回相同的输出。这简化了其他语言中需要哈希表或其他查找数组的内容。