我想根据value1
列中的值确定列value2
中的最大值:
df <- 'inf value1 value2
xx1 20 30
xx2 15 40
xx3 25 20'
df <- read.table(text=df, header=T)
我的预期输出是这样的:
out <- 'inf value1 value2
xx1 20 30
xx2 15 40
xx3 20 20'
out <- read.table(text=out, header=T)
在value2
列的第三行中,现在20
代替25
,因为这是同一行value2
列的值。我有一个大型数据集,我很感激任何处理它的想法。
答案 0 :(得分:3)
您还可以使用min
pmin
值
with(df, pmin(value1, value2))
## [1] 20 15 20
一些基准
set.seed(123)
test1 <- sample(1e3, 1e8, replace = TRUE)
test2 <- sample(1e3, 1e8, replace = TRUE)
### My solution
system.time(res1 <- pmin(test1, test2))
# user system elapsed
# 2.87 0.11 3.00
### @Avinash
system.time(res2 <- ifelse(test1 < test2, test1, test2))
# user system elapsed
# 16.33 2.41 18.87
### Contributed by @Colonel
system.time({temp <- test1 > test2 ; test1[temp] <- test2[temp]})
# user system elapsed
# 2.34 0.29 2.63
identical(res1, res2)
# [1] TRUE
identical(res1, test1)
# [1] TRUE
答案 1 :(得分:2)
您可以使用ifelse
df <- 'inf value1 value2
xx1 20 30
xx2 15 40
xx3 25 20'
df <- read.table(text=df, header=T)
df$value1 <- ifelse(df$value2<df$value1,df$value2,df$value1)
df
# inf value1 value2
# 1 xx1 20 30
# 2 xx2 15 40
# 3 xx3 20 20