Saya ingin menggeser semua nilai di kolom zona satu per satu, dan kemudian membandingkan di mana zona dan kolom zone_shift baru berbeda, untuk mendapatkan ide ketika hewan berpindah dari satu zona ke zona lainnya. Namun, saya sudah terjebak pada langkah pertama ...

Ini adalah bagian dari df saya:

time  zone

0.00  social
2.036 social
2.100 social
2.196 interzone
3.436 nest
2.468 nest
2.676 nest
2.708 nest
2.868 nest
3.204 nest
3.300 interzone

Saya menggunakan fungsi berikut:

df %>% 
  mutate(zone_shift = dplyr::lag(zone, n = 1, default = NA_character_)) 

Namun, hasil yang saya dapatkan adalah sebagai berikut:

    time  zone         zone_shift
    0.00  social       NA
    2.036 social       social
    2.100 social       social
    2.196 interzone    NA
    3.436 nest         NA
    2.468 nest         nest
    2.676 nest         nest
    2.708 nest         nest
    2.868 nest         nest
    3.204 nest         nest
    3.300 interzone    interzone

Untuk sisa df, tidak ada nilai dalam kolom yang benar-benar digeser - kolom zona dan zona_pergeseran persis sama, dan terkadang NA diperkenalkan di mana pergeseran seharusnya terjadi.

Saya akan sangat berterima kasih atas bantuan apa pun! Terima kasih!

0
Alja Podgornik 16 Juni 2021, 17:39

2 jawaban

Jawaban Terbaik

Tidak ada fungsi lag, tetapi ini berfungsi menurut saya:

df$zone_shift <- c(NA, df$zone[-length(df$zone)])

df$match <- df$zone == df$zone_shift 
0
Anoushiravan R 16 Juni 2021, 15:04

Berikut ini akan memberi Anda dua kolom dengan variabel waktu dan zona Anda utuh, dan yang terakhir digeser turun satu.

df2<-df %>%
 mutate(time=time,zone=lag(zone)) %>%
 na.omit()
0
Ben 16 Juni 2021, 15:03