如果那么R中的语句将不起作用

时间:2017-01-21 01:41:46

标签: r

我想知道为什么我的声明如果不起作用。

if (gold_elements2$unit = "pct") 
  {gold_elements2$value * 10000}

a picture of the top of my data set

我想将值列中的值乘以10000,该值对应于单位列中的因子元素pct

我不断将整个值列乘以10000。 怎么了?

1 个答案:

答案 0 :(得分:0)

制作了一些数据(将来请添加实际样本数据而不是数据截图,人们更容易复制)

gold_elements2 <- data.frame(cbind(unit=c("pct","pcg","had","pct"), value=c(1,2,3,6)))

如果您只想在unit = pct处提取值并乘以1000,那么这将起作用

as.numeric(gold_elements2[which(gold_elements2$unit=="pct"),"value"])*10000

输出:

[1] 10000 40000

如果你想将值列中的数据更改为当单位为pct时乘以1000,那么这将有效

library(data.table)
gold_elements2 <- data.table(gold_elements2)
gold_elements2[,value:=ifelse(unit=="pct",as.numeric(value)*1000,value)]
gold_elements2

输出:

   unit value
1:  pct  1000
2:  pcg     2
3:  had     3
4:  pct  4000