我需要你的整理資料框。下面提供了一個資料示例:
> dput(data_1)
structure(list(subject = c("E1", "E1", "E1", "E1", "E1", "E1",
"E1", "E1"), block = c(3, 3, 4, 4, 5, 5, 6, 6), condition = c("EI",
"I", "EI", "I", "EI", "I", "EI", "I"), prev_total_RT = c("963",
"NA", "963", "NA", "963", "NA", "963", "NA"), total_RT = c(271,
1042, 409, 406, 544, 490, 645, 465), Item_number = c(17, 46,
17, 46, 17, 46, 17, 46)), row.names = c(NA, -8L), class = c("tbl_df",
"tbl", "data.frame"))
> data_1
# A tibble: 8 x 6
subject block condition prev_total_RT total_RT Item_number
<chr> <dbl> <chr> <chr> <dbl> <dbl>
1 E1 3 EI 963 271 17
2 E1 3 I NA 1042 46
3 E1 4 EI 963 409 17
4 E1 4 I NA 406 46
5 E1 5 EI 963 544 17
6 E1 5 I NA 490 46
7 E1 6 EI 963 645 17
8 E1 6 I NA 465 46
雖然提供了條件“EI”的“prev_total_RT”的值,但不提供條件“I”的值。我需要一個代碼來為條件“I”生成“prev_total_RT”的值。
條件“I”的“prev_total_RT”的值應該是“塊”= 3、4和5中條件“I”的“total_RT”的總和。這應該由每個“主題”和“專案編號”決定. 例如,對于條件“I”中的主題“E1”和Item_number“46”,“prev_total_RT”的值應該是“block”3、4、5中“total_RT”值的總和:1042 406 490 = 1938 年。
下面提供了所需的輸出:
> dput(data_2)
structure(list(subject = c("E1", "E1", "E1", "E1", "E1", "E1",
"E1", "E1"), block = c(3, 3, 4, 4, 5, 5, 6, 6), condition = c("EI",
"I", "EI", "I", "EI", "I", "EI", "I"), prev_total_RT = c(963,
1938, 963, 1938, 963, 1938, 963, 1938), total_RT = c(271, 1042,
409, 406, 544, 490, 645, 465), Item_number = c(17, 46, 17, 46,
17, 46, 17, 46)), row.names = c(NA, -8L), class = c("tbl_df",
"tbl", "data.frame"))
> data_2
# A tibble: 8 x 6
subject block condition prev_total_RT total_RT Item_number
<chr> <dbl> <chr> <dbl> <dbl> <dbl>
1 E1 3 EI 963 271 17
2 E1 3 I 1938 1042 46
3 E1 4 EI 963 409 17
4 E1 4 I 1938 406 46
5 E1 5 EI 963 544 17
6 E1 5 I 1938 490 46
7 E1 6 EI 963 645 17
8 E1 6 I 1938 465 46
對此的任何幫助將不勝感激。
uj5u.com熱心網友回復:
一種直截了當的方法,
library(dplyr)
df %>%
group_by(subject, Item_number) %>%
mutate(prev_total_RT = replace(prev_total_RT, condition == 'I', sum(total_RT[block %in% c(3, 4, 5)])))
# subject block condition prev_total_RT total_RT Item_number
# <chr> <dbl> <chr> <chr> <dbl> <dbl>
#1 E1 3 EI 963 271 17
#2 E1 3 I 1938 1042 46
#3 E1 4 EI 963 409 17
#4 E1 4 I 1938 406 46
#5 E1 5 EI 963 544 17
#6 E1 5 I 1938 490 46
#7 E1 6 EI 963 645 17
#8 E1 6 I 1938 465 46
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/389571.html
上一篇:如何用正則運算式提取該字串坐標的3個數值,無論它們是正數值坐標還是負數值坐標
下一篇:R:替換現有范圍之外的值
