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