简体   繁体   English

通过子集检索 R 中的列值

[英]Retrieving a column value in R by subsetting

I have this dataframe (df):我有这个数据框(df):

df <- data.frame(Data1 = c(1,3), 
                 Data2 = c(3,9), 
                 Data3 = c(7,2), 
                 Data1Status = c(1,4), 
                 Data2Status = c(2,5), 
                 Data3Status = c(3,6), 
                 NumberOfMaxValue = c(3,2))

Data1  Data2  Data3  Data1Status  Data2Status  Data3Status NumberOfMaxValue
1      3      7      1            2            3           3
3      9      2      4            5            6           2

And i want do get this new column:我想得到这个新专栏:

Data1  Data2  Data3  Data1Status  Data2Status  Data3Status NumberOfMaxValue  DataMaxStatus
1      3      7      1            2            3           3                 3
3      9      2      4            5            6           2                 5

I tried something like this:我试过这样的事情:

DataMaxStatus = df[, as.numeric(df$NumberOfMaxValue) + 3] , but it didn't work. DataMaxStatus = df[, as.numeric(df$NumberOfMaxValue) + 3] ,但没有用。

EDIT/EXPLANATION:编辑/解释:

NumberOfMaxValue is the number of the biggest data (1, 2 or 3) NumberOfMaxValue是最大数据的个数(1、2 或 3)

DataMaxStatus is the status of the greater number between Data1, Data2 e Data3 DataMaxStatus是 Data1、Data2 e Data3 之间较大数字的状态

We can get the corresponding Status value by creating a matrix of row/column index to subset from Status columns.我们可以通过创建一个行/列索引矩阵来从Status列中获取子集,从而获得相应的Status值。

cols <- grep('Status', names(df))
df$DataMaxStatus <- df[cols][cbind(1:nrow(df), df$NumberOfMaxValue)]
df

#  Data1 Data2 Data3 Data1Status Data2Status Data3Status NumberOfMaxValue DataMaxStatus
#1     1     3     7           1           2           3                3             3
#2     3     9     2           4           5           6                2             5

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM