首页 > 解决方案 > 一列中的对应值基于另一列中的值

问题描述

我在下面有一个数据框 df 。我需要构建一个函数,以便根据第 1 列(即 d)中的值,我需要在 d5 列中有相应的值

       s1
       d  d1  d2         d5
  1  A&B  A    B    factor&integer
  2  A&C  A    C    factor&factor
  3  A&D  A    D    factor&integer
  4  A&E  A    E    factor&factor

所以基本上我需要构建一个名为“class1”的函数。所以对于class1(A&E),输出应该是factor&factor,对于class1(A&D),输出应该是factor&integer。希望你明白我的意思。我用下面的代码尝试了自己,但仍然出现错误。

 yt<-list()    
 class1 <- function(name1,variable)
 {
 for(variable in s1$d)
 {
 yt[variable] <- name1[which(name1$d==variable),4]
 yt[variable] <- print(as.data.frame(yt))
 }
 }

现在,如果我输入 class1(s1,A&C)。我应该得到因素和因素。但我没有得到这个

标签: r

解决方案


如果您只想获得一个函数来匹配类似于 column dto column的变量d5,那么试试这个

s1 <- data.frame(
  d = c("A&B","A&C","A&D","A&E"),
  d1 = c("A","A","A","A"),
  d2 = c("B","C","D","E"),
  d5 = c("factor&integer", "factor&factor", "factor&integer", "factor&factor"),
  stringsAsFactors = F
)

class1 <- function(data,var) {
  data[which(data$d==var),"d5"]
}
class1(s1, "A&C")

推荐阅读