复制R

时间:2015-08-29 05:18:51

标签: r

我搜索了一下,无法找到答案。

我正在尝试复制一个包含字符的数组,当我复制它时,我得到的数字对应于级别的顺序。

我正在从凌乱的电子表格中复制,因此有一些注释,有些单元格是空的。因此,我通过查看具有干净矢量的单元格中是否有适当的值来选择我想要的值。

clean <- c( "o", "f", "g", "s") #cleans


x <- character() #makes two empty vectors
y <- character()
for(i in 1:length(Data$Top.Hit.percentage)) {
  if(any(clean == Data$Agreement.Level)) {
    x[i] <- Data$Top.Hit.percentage[i]
    y[i] <- unique(Data$Agreement.Level[i]) #does not copy value
  }
}

y

复制y后,我想将字母更改为数值1-4。这些字母对应于分类水平:顺序,家庭,属,种。因此,我希望他们是1-4。

for (i in 1:length(y)) { #useless for now
   if (y[i] == "o") {
     y[i] <- 1
   }
   if (y[i] == "f") {
     y[i] <- 2
   }
   if (y[i] == "g") {
     y[i] <- 3
   }
   if (y[i] == "s") {
     y[i] <- 4
   }
 }

2 个答案:

答案 0 :(得分:1)

这可以使用命名向量对数字进行字符值的查找/转换:

z <- 1:4
names(z) <-  c( "o", "f", "g", "s")
y <- z[y]

答案 1 :(得分:0)

数据类$ Agreement.level是因子(向量的名称从数据更改为数据)

> c <- character()
> c <- data$Agreement.Level
> c

当数据$ Agreement.Level被分配给c时,它变为类型/模式因子

问题可以这样解决:

> c <- as.character(data$Agreement.Level)

然后可以删除不需要的值,如下所示

inRem <- which(!(c %in% clean)) #gets index of b that do not contain clean
c <- c[-inRem] #removes indexes which return True from !(c %in% clean)