Saya memiliki kerangka data dengan data deret waktu untuk beberapa subjek, dan ingin mengekstrak vektor UserId unik yang memenuhi kriteria untuk jumlah hari subjek menjawab serangkaian pertanyaan

    > df_all_rows
                                 UserId Answer_Date Q1_Daily Q2_Daily Q3_Daily Q4_Daily Q5_Daily
1  1f3edec4-38c9-44f3-9931-942ccba98203 2017-01-26        7        8        8        8        5        
2  202e6c2f-0b78-4ae2-9b60-4116a7241199 2017-03-11        6        4        5        3        6        
3  23124514-338b-46cf-8fa8-f4fea09f3d87 2017-04-05        3        3        4        1        3        
4  23124514-338b-46cf-8fa8-f4fea09f3d87 2017-04-06        3        3        4        1        2        
5  23124514-338b-46cf-8fa8-f4fea09f3d87 2017-04-07        3        3        4        1        2        
6  23124514-338b-46cf-8fa8-f4fea09f3d87 2017-04-08        3        3        2        2        1        
7  23124514-338b-46cf-8fa8-f4fea09f3d87 2017-04-09        3        3        4        1        2        
8  23124514-338b-46cf-8fa8-f4fea09f3d87 2017-04-10        3        3        4        2        2        
9  2354d580-4065-404a-8a3e-154dc83900d3 2017-04-21        9        9        8        8        9        
10 4ab5911d-767f-47db-b937-f1b2f3735ff7 2017-07-27        5        3        2        0        1        
11 59eeda84-53cc-47fd-b2b0-23bfaa6cbde7 2017-04-04        3        2        1        5        2        
12 59eeda84-53cc-47fd-b2b0-23bfaa6cbde7 2017-04-05        3        2        1        5        5        

Saya mencoba cuplikan kode berikut:

subjects <- df_all_rows %>% 
              group_by(UserId) %>%
              filter(n() >= n_required) %>% 
              unique(UserId)

Sayangnya langkah terakhir tidak berhasil: Saya mendapatkan pesan kesalahan berikut:

Error in isFALSE(incomparables) : object 'UserId' not found

Cukup mudah untuk membuat bingkai data baru (sebut saja df_tmp) menggunakan tiga baris pertama dari segmen ini dan kemudian menulis

subjects <- unique(df_tmp[["UserId"]])

Tetapi tentunya harus ada cara untuk melakukan ini dalam satu langkah, bukan dua tanpa membuat kerangka data lain?

Saya akan sangat menghargai bimbingan dengan masalah saya.

Hormat kami

Thomas Philips

0
Thomas Philips 19 November 2020, 20:22

1 menjawab

Jawaban Terbaik
Error in isFALSE(incomparables) : object 'UserId' not found

Kesalahan ini berarti bahwa unique sebenarnya mencari variabel dengan nama UserId. Tentu saja, ini tidak ada.

Unik

Jika Anda ingin menggunakan unique, yang berikut ini akan berfungsi sesuai dengan postingan ini (Menggunakan pipa dalam fungsi unique() di r tidak berfungsi).

subjects <- df_all_rows %>% 
              group_by(UserId) %>%
              filter(n() >= n_required) %>% 
              {unique(.$UserId)}

Dengan rapi bersih

Seperti yang ditunjukkan di bawah oleh pengguna MrFlick di komentar di bawah, Anda juga dapat menggunakan yang berikut ini jika Anda menginginkan versi yang murni dan rapi.

subjects <- df_all_rows %>% 
              group_by(UserId) %>%
              filter(n() >= n_required) %>% 
              pull(UserId) %>% unique()

Atau Anda dapat mencoba menggunakan distinct. Lihat juga di sini.

HTH!

2
MacOS 19 November 2020, 19:56