Мне нужна небольшая помощь в доработке моего кода. Я пытаюсь запустить тест суммы рангов Уилкокса и использую для этого следующий код:
Program_A <- c(95,78,88,84,89,83,79,85,74,81,77,82)
Program_B <- c(91,93,83,98,86,95,99,100,94,107,92,102,105,103,87)
n1 <- length(Program_A)
n2 <- length(Program_B)
#make dataframe
Program_data <- data.frame(
sections = c(rep("Program_A", n1),
rep("Program_B", n2)),
scores = c(Program_A, Program_B)
)
Program_data
#carry out function
Program_data1 <- Program_data %>%
mutate(
score_rank = rank(scores)
) %>%
group_by(sections) %>%
summarise(test_stat = sum(score_rank))
Program_data1
# sections test_stat
# <chr> <dbl>
# 1 Program_A 94
# 2 Program_B 284
Tx <- 94 #using the smallest value
n1
n2
z <- (Tx - (n1*(n1+n2+1))/2)/sqrt((n1*n2*(n1+n2+1))/12)
z
Это будет работать до тех пор, пока Program_A имеет более короткую длину.
Однако сейчас я хотел бы найти способ проверить длины Program_A и Program_B, чтобы проверить, что больше, если длина чисел должна измениться.
Пример: Program_A <- c(95,78,88,84) Программа_B <- c(91,93,83,98,86,95)
Я хотел бы проверить, какая переменная длиннее, получить значение каждой длины и назначить таким образом, чтобы n1 всегда имел значение переменной более короткой длины, а n2 всегда будет иметь значение переменной большей длины.
Спасибо, ДМ
Как насчет использования min
и max
для длины переменных?
n1 <- min(length(Program_A), length(Program_B))
n2 <- max(length(Program_A), length(Program_B))
Мы также можем сделать
l1 <- lengths(list(Program_A, Program_B))
n1 <- min(l1)
n2 <- max(l1)