[英]How to create new columns based on values and names of existing columns in R?
[英]How to create new columns based on other columns' values using R
我在r中有一个数据框(df),并且我对两列df $ LEFT和df $ RIGHT感兴趣。 我想创建两个新列,以便在df $ BEST中,每行的LEFT和RIGHT之间的数字较小。 类似地,我想创建一列df $ WORST,在该列中存储最小的数字。
ID LEFT RIGHT
1 20 70
2 65 15
3 25 65
我想获得这个:
ID LEFT RIGHT BEST WORST
1 20 70 20 70
2 65 15 15 65
3 25 65 25 65
我怎样才能做到这一点?
我们可以使用pmin/pmax
来获取两列的相应最小值,最大值
transform(df, BEST = pmin(LEFT, RIGHT), WORST = pmax(LEFT, RIGHT))
# ID LEFT RIGHT BEST WORST
#1 1 20 70 20 70
#2 2 65 15 15 65
#3 3 25 65 25 65
df <- structure(list(ID = 1:3, LEFT = c(20L, 65L, 25L), RIGHT = c(70L,
15L, 65L)), class = "data.frame", row.names = c(NA, -3L))
一种替代方法是使用apply
> df$WORST <- apply(df[,-1], 1, min)
> df$BEST <- apply(df[,-1], 1, max)
> df
ID LEFT RIGHT WORST BEST
1 1 20 70 20 70
2 2 65 15 15 65
3 3 25 65 25 65
使用@akrun的方法进行transform
:
> transform(df,
WORST = apply(df[,-1], 1, min),
BEST = apply(df[,-1], 1, max))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.