R:如何为每个主题(不包括NA值)创建排名变量
我想做这样一个情节: 我有“注视持续时间”(以秒为单位,但没关系)和“时间”变量,我需要创建“顺序注视次数”变量,其中注视将根据每个受试者的时间变量进行排序。 我的固定数据包括一些NA值,这些值不应包括在排名中 摘自我的数据:R:如何为每个主题(不包括NA值)创建排名变量,r,dplyr,tidyverse,R,Dplyr,Tidyverse,我想做这样一个情节: 我有“注视持续时间”(以秒为单位,但没关系)和“时间”变量,我需要创建“顺序注视次数”变量,其中注视将根据每个受试者的时间变量进行排序。 我的固定数据包括一些NA值,这些值不应包括在排名中 摘自我的数据: Subject FixationDuration Time 1 NA 1 1 0.33 2 1 NA 3 1 0.15
Subject FixationDuration Time
1 NA 1
1 0.33 2
1 NA 3
1 0.15 4.22
1 3.20 5.93
..
2 6.88 1
2 9.23 3
2 0.77 3.01
2 1.88 4.91
..
15 6.22 1
15 NA 1.56
15 NA 1.76
15 0.24 2.39
我需要以下结果:
Subject FixationDuration Time OrdinalFixationNumber
1 NA 1 NA
1 0.33 2 1
1 NA 3 NA
1 0.15 4.22 2
1 3.20 5.93 3
..
2 6.88 1 1
2 9.23 3 2
2 0.77 3.01 3
2 1.88 4.91 4
..
15 6.22 1 1
15 NA 1.56 NA
15 NA 1.76 NA
15 0.24 2.39 2
有人能帮我吗?谢谢。这里有一个选项。按“主题”分组后,
将“FixationDuration”中的非Na元素替换为按“时间”值排序的行编号,其中“FixationDuration”为非Na
library(dplyr)
df1 %>%
group_by(Subject) %>%
mutate(OrdinalFixationNumber = replace(FixationDuration,
!is.na(FixationDuration), row_number(Time[!is.na(FixationDuration)])))
# A tibble: 13 x 4
# Groups: Subject [3]
# Subject FixationDuration Time OrdinalFixationNumber
# <int> <dbl> <dbl> <dbl>
# 1 1 NA 1 NA
# 2 1 0.33 2 1
# 3 1 NA 3 NA
# 4 1 0.15 4.22 2
# 5 1 3.2 5.93 3
# 6 2 6.88 1 1
# 7 2 9.23 3 2
# 8 2 0.77 3.01 3
# 9 2 1.88 4.91 4
#10 15 6.22 1 1
#11 15 NA 1.56 NA
#12 15 NA 1.76 NA
#13 15 0.24 2.39 2
数据
df1这里有一个选项。按“主题”分组后,将“FixationDuration”中的非Na元素替换为按“时间”值排序的行编号,其中“FixationDuration”为非Na
library(dplyr)
df1 %>%
group_by(Subject) %>%
mutate(OrdinalFixationNumber = replace(FixationDuration,
!is.na(FixationDuration), row_number(Time[!is.na(FixationDuration)])))
# A tibble: 13 x 4
# Groups: Subject [3]
# Subject FixationDuration Time OrdinalFixationNumber
# <int> <dbl> <dbl> <dbl>
# 1 1 NA 1 NA
# 2 1 0.33 2 1
# 3 1 NA 3 NA
# 4 1 0.15 4.22 2
# 5 1 3.2 5.93 3
# 6 2 6.88 1 1
# 7 2 9.23 3 2
# 8 2 0.77 3.01 3
# 9 2 1.88 4.91 4
#10 15 6.22 1 1
#11 15 NA 1.56 NA
#12 15 NA 1.76 NA
#13 15 0.24 2.39 2
数据
df1很抱歉,它对我不起作用,我认为问题的表述不正确,所以我再次尝试了更详细的表述。因为您之前的问题大于0,现在是NAI,很抱歉,它对我不起作用,我认为问题的表述不正确,所以我再次尝试了一个更详细的公式,因为你之前的问题是大于0,现在是NA
df1 <- structure(list(Subject = c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
15L, 15L, 15L, 15L), FixationDuration = c(NA, 0.33, NA, 0.15,
3.2, 6.88, 9.23, 0.77, 1.88, 6.22, NA, NA, 0.24), Time = c(1,
2, 3, 4.22, 5.93, 1, 3, 3.01, 4.91, 1, 1.56, 1.76, 2.39)),
class = "data.frame", row.names = c(NA,
-13L))