簡體   English   中英

如何使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM