我有两列显示公交车站到一个人家的距离。一个是数字,另一个是单位(块或分钟)。我想将块转换为分钟。所以我认为每个街区都是2分钟(是吗?)。我想将第一列中的所有数字乘以2,其单位为块。这是一个示例:
TOBUS TOBUSU
2 (1) Block
3 (1) Block
5 minutes
4 (1) Block
2 minutes
在上面的示例中,我将拥有
TOBUS TOBUSU
4 minutes
6 minutes
5 minutes
8 minutes
2 minutes
答案 0 :(得分:2)
一种方法是:
# df is your data.frame
df$TOBUS[df$TOBUSU=="(1) Block"] <- df$TOBUS[df$TOBUSU=="(1) Block"] * 2
df$TOBUSU[df$TOBUSU=="(1) Block"] <- "minutes"
答案 1 :(得分:1)
提取圆括号之间的数字并乘以TOBUS
vals <- df$TOBUS * as.integer(sub("\\((\\d+)\\).*", "\\1", df$TOBUSU)) * 2
df$TOBUS[!is.na(vals)] <- vals[!is.na(vals)]
df$TOBUSU <- "minutes"
df
# TOBUS TOBUSU
#1 4 minutes
#2 6 minutes
#3 5 minutes
#4 8 minutes
#5 2 minutes
答案 2 :(得分:1)
df$TOBUS <- ifelse(df$TOBUSU == "(1) Block", df$TOBUS * 2, df$TOBUS)
df$TOBUSU <- "minutes"
#Output
TOBUS TOBUSU
4 minutes
6 minutes
5 minutes
8 minutes
2 minutes