R:数据帧上的列操作

时间:2014-10-28 11:55:41

标签: r

我的数据框df中有一个名为Ratio的列,其中包含由x分隔的两个正整数y/ [即,格式化为x/y]。我想用integer((x/y)*10)(舍入到最接近的整数)

替换此列中的每一行

示例,如果Ratio中元素的值为14/20,我需要将其更改为7

[{1}}列中有0/0级,我希望将其更改为Ratio]

3 个答案:

答案 0 :(得分:0)

df$Ratio<-as.character(df$Ratio)
df$resRatio[df$Ratio!="0/0"]<-sapply(df$Ratio[df$Ratio!="0/0"],
                                     function(expr) {
                                           round(eval(parse(text=expr))*10,0)})
df$resRatio[df$Ratio=="0/0"]<-5

答案 1 :(得分:0)

这是一种方法:

# an example data frame
> dat <- data.frame(Ratio = c("0/0", "14/20"))

transform(dat, Ratio2 = sapply(strsplit(as.character(Ratio), "/"), function(x) 
  if (x[2] == "0") 5 else round(Reduce("/", as.integer(x)) * 10)))
#   Ratio Ratio2
# 1   0/0      5
# 2 14/20      7

答案 2 :(得分:-1)

您是否尝试过使用as.integer

> as.integer(14.001/20.01*10)
[1] 7