a <- c(4000,3500,3000) b <- c(0.43,0.55,0.61) test.data <- data.frame(a,b) Let's say I want to get the value 0.55 by referencing 3500 instead of getting it by row/column. How would I achieve this? I think I could convert a to a string, then reference it that way, but is there a way to refer to the numeric value to extract the value in b?Edit: Thank you all for your great responses!
3 Réponses :
Si je l'ai bien compris, vous pouvez l'obtenir comme suit:
library(dplyr) test.data %>% filter(a == 3500) %>% pull(b) [1] 0.55
Je voudrais également vous présenter dplyr lorsque vous commencez votre voyage R:
test.data$b[test.data$a == 3500] [1] 0.55
Utilisation de data.table-
> setDT(test.data)[a==3500]$b [1] 0.55
OR
> setDT(test.data)[a==3500,b] [1] 0.55
Remarque - Premièrement, l'option est préférée comme @Frank mentionné dans le commentaire.
Le premier idiome est préféré car il ne crée pas le sous-ensemble des données pour toutes les colonnes, juste celle qui est nécessaire. En outre, il vérifie la correspondance exacte du nom de la colonne.
@Frank Je suis d'accord. Mais je lui donnais plus d'options.
Lorsque vous donnez des options, il est agréable de parler des différences et des raisons pour lesquelles l'un pourrait préférer l'une à l'autre.
Plus d'options.
test.data[, "b"][test.data$a == 3500] # [1] 0.55 test.data[test.data$a == 3500, "b"] # [1] 0.55
Un autre: avec (test.data, b [a == 3500])