Ar sonraki sütun subsetine nasıl

oy
0
df <- data.frame(intro = c(bob,bob,bob),
           intro_score = c(Excellent,Excellent,Good),
           method = c(sally,sally,sally),
           method_score = c(Excellent,Excellent,Excellent),
           result = c(Norman,Norman,Norman),
           result_score = c(Good,Good,Good)) 

Ben nasıl bu dataframe içinde bob için bakmak istiyorsanız ben bob Burada ise emin değilim varsayarak bob (intro_score only) yanındaki sütunu döndürür. Ben ken aramaya olsaydı ki, sonuç boş olmalıdır. Ben Norman aramaya olsaydı, sonuç result_score dönmelidir.

Böyle bir şey denedim:

name <- bob

df_name <- df %>%
  if (str_detect(intro, name)) {
    select((which(colnames==str_detect(intro, name)))+1)
  } else {}

Yardımın için teşekkürler!

Oluştur 10/10/2019 saat 00:37
kaynak kullanıcı
Diğer dillerde...                            


4 cevaplar

oy
1

Adları gerekirse yapabileceğini baz R kullanarak:

names(df[unique(which(df=="bob",TRUE)[,2]+1)])
[1] "intro_score"

Eğer sütun değerleri gerekiyorsa veya yapmanız:

df[unique(which(df=="bob",TRUE)[,2]+1)]

intro_score
1   Excellent
2   Excellent
3        Good
Cevap 10/10/2019 saat 01:13
kaynak kullanıcı

oy
0

Zaman (intro, yöntemin, sonuç), isim ve skor verilerinizi yeniden şekillendirmek olabilir.

df2 <- reshape(df, direction = "long", varying = list(c(1,3,5), c(2,4,6)), v.names = c("name", "score"), times = c("intro", "method", "result"))    
df2[df2$name == "Norman", "score"]
Cevap 10/10/2019 saat 01:19
kaynak kullanıcı

oy
0

İşte bir seçenek ile select_if

library(dplyr)
library(magrittr)
df %>% 
   select_if(~ any(. == "bob")) %>%
   names %>%
   match(., names(df)) %>% 
   add(1) %>% 
   names(df)[.]
#[1] "intro_score"
Cevap 10/10/2019 saat 01:13
kaynak kullanıcı

oy
0
library(purrr)
search_person <- "bob"
colnames(df)[which(map_lgl(df,~all(.x == search_person))) + 1]
"intro_score"
Cevap 10/10/2019 saat 00:52
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more