我想知道为什么我的声明如果不起作用。
if (gold_elements2$unit = "pct")
{gold_elements2$value * 10000}
我想将值列中的值乘以10000,该值对应于单位列中的因子元素pct
。
我不断将整个值列乘以10000。 怎么了?
答案 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