我有一個資料集,其中包含在不同時間點進行的測量。我想計算一個時間段內的一次測量在下一個時間段內進行相同測量的次數百分比。我想知道從一個時期到下一個時期,每一行有多頻繁地具有相同的測量值。我怎樣才能做到這一點?

樣本資料:
structure(list(t1 = c(1, 2, 1), t2 = c(1, 1, 1), t3 = c(1, 3,
4), t4 = c(2, 2, 2), t5 = c(3, 3, 3), t6 = c(3, 3, 3), t7 = c(1,
1, 1)), row.names = c(NA, -3L), spec = structure(list(cols = list(
t1 = structure(list(), class = c("collector_double", "collector"
)), t2 = structure(list(), class = c("collector_double",
"collector")), t3 = structure(list(), class = c("collector_double",
"collector")), t4 = structure(list(), class = c("collector_double",
"collector")), t5 = structure(list(), class = c("collector_double",
"collector")), t6 = structure(list(), class = c("collector_double",
"collector")), t7 = structure(list(), class = c("collector_double",
"collector"))), default = structure(list(), class = c("collector_guess",
"collector")), delim = ","), class = "col_spec"), class = c("spec_tbl_df",
"tbl_df", "tbl", "data.frame"))
uj5u.com熱心網友回復:
要將每個時間段與前一個時間段進行比較,最簡單的方法可能是將資料放在長格式中并與滯后時間進行比較:
library(dplyr)
library(tidyr)
timedata |>
mutate(id = row_number()) |>
pivot_longer(
-id,
names_to = "time"
) |>
group_by(id) |>
mutate(nochange = value == lag(value)) |>
group_by(time) |>
summarise(
num_repeated = sum(nochange, na.rm = TRUE),
percent_repeated = num_repeated / n() * 100
)
# A tibble: 7 x 2
# time num_repeated percent_repeated
# <chr> <int> <dbl>
# 1 t1 0 0
# 2 t2 2 66.7
# 3 t3 1 33.3
# 4 t4 0 0
# 5 t5 0 0
# 6 t6 3 100
# 7 t7 0 0
uj5u.com熱心網友回復:
如果你打電話給你的資料框df。然后:
equal <- as.data.frame(NA)
for (i in 1:(length(df)-1)) {
for (j in 1:nrow(df)) {
equal[j,i] <- df[j,i]== df[j, i 1]
}
}
sum(equal[TRUE])*100/(nrow(df)* length(df))
請注意,這將比較 t1= t2 (在最后一列中無法進行比較,因為沒有“后驗”測量值)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/465465.html
上一篇:使用子包構建go介面
