Match row value with column name and extract value in R

后端 未结 2 1140
日久生厌
日久生厌 2020-12-19 13:07

I have a table where I need to choose all the values in the Data column, match with the column names and take the value from that row. Ex. Data column: choose A1, find colu

相关标签:
2条回答
  • 2020-12-19 13:41

    What about this?

    df[cbind(1:4, match(df$Data, names(df)))]
    [1] "1"  "6"  "11" NA
    
    0 讨论(0)
  • 2020-12-19 13:45

    If you create your data.frame with the row.names as your Data column, then it can be as simple as:

    mydf <- read.table(text = "A1 A2 A3 Data 
    1 5 9 A1
    2 6 10 A2 
    3 7 11 A3 
    4 8 12 A4", header = TRUE, row.names = "Data")
    
    sapply(row.names(mydf), function(x) mydf[[x, x]])
    ## $A1
    ## [1] 1
    ## 
    ## $A2
    ## [1] 6
    ## 
    ## $A3
    ## [1] 11
    ## 
    ## $A4
    ## NULL
    ## 
    

    mydf[x,x] simply returns the element of my df, in the row with the name x and the column with name x. You may need to tweak this output to match your goal.

    0 讨论(0)
提交回复
热议问题