[英]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.