我的数据框df
中有一个名为Ratio
的列,其中包含由x
分隔的两个正整数y
和/
[即,格式化为x/y
]。我想用integer((x/y)*10)
(舍入到最接近的整数)
示例,如果Ratio
中元素的值为14/20
,我需要将其更改为7
。
[{1}}列中有0/0
级,我希望将其更改为Ratio
]
答案 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