在R中添加具有相关值的列

时间:2014-01-28 17:04:55

标签: r

我有以下数据集:

Data <- data.frame(
  date = c("2001-1", "2001-2", "2001-3", "2001-1", "2001-2", "2001-3", "2001-1", "2001-2", "2001-3"),
  actor = c("A", "B", "C", "A", "B", "C", "A", "B", "C"),
  cat = c("I", "II", "III", "I", "II", "III", "I", "II", "III"),
  freq = c(2, 3, 4, 1, 2, 5, 2, 6, 3)
)

我想添加另一列(catNo):

Data["catNo"] <- NA

现在我想用数字(1-3)替换“catNo”中的NA,具体取决于“cat”中的值(“I”= 1,“II”= 2,“III”= 3)。 / p>

如何添加这些数字,具体取决于“cat”中的值?

2 个答案:

答案 0 :(得分:0)

如果您需要自制解决方案:

Data$catNo <- vapply(Data$cat, function(x) switch(x, I = 1, II = 2, III = 3, NA), FUN.VALUE = numeric(1))

请注意,如果不匹配,则返回NA

答案 1 :(得分:0)

如果您有一个唯一“字符串”的向量和“数字”的关联向量,您可以尝试使用:

strings <- c("a", "b" ,"d", "n")
numbers <- 1:4
x <- sample(l, 10, rep = T)
xf <- as.numeric(factor(x , levels = strings , labels = numbers))