gpt4 book ai didi

r - 在 R 中按条件堆叠多列

转载 作者:行者123 更新时间:2023-12-04 14:46:31 26 4
gpt4 key购买 nike

我有一个数据库,其中针对两个任务条件有几个不同的情绪变量,例如:

   ID      Cond1_sad Cond1_anxious Cond1_happy Cond2_sad Cond2_anxious Cond2_happy
1 C_01 1 7 4 1 3 2
2 C_02 3 6 4 4 6 5
3 C_03 8 6 5 3 4 4
4 C_04 4 5 5 6 8 6
5 C_05 6 4 3 2 6 3
6 C_06 1 4 2 8 1 4

我需要根据条件堆叠,但将情绪变量保留在单独的列中。例如:

    ID    Condition Sad Anxious Happy
1 C_01 1 1 7 4
2 C_02 1 3 6 4
3 C_03 1 8 6 5
4 C_04 1 4 5 5
5 C_05 1 6 4 3
6 C_06 1 1 4 2
7 C_01 2 1 3 2
8 C_02 2 4 6 5
9 C_03 2 3 4 4
10 C_04 2 6 8 6
11 C_05 2 2 6 3
12 C_06 2 8 1 4

我尝试了各种堆叠数据的选项(例如,熔化它们),但最终所有变量都堆叠在一起。有更好的解决方案吗?

非常感谢。

最佳答案

这是在 tidyverse 中执行此操作的一种方法。这应该比通过索引指定列位置更灵活一些。

library(dplyr)
library(tidyr)
library(janitor)

df %>%
pivot_longer(-ID, names_to = c("Condition", "Emotion"),
values_to = "Value", names_sep = "_", names_prefix = "Cond",
names_transform = list(Condition = as.integer)) %>%
pivot_wider(names_from = "Emotion", values_from = "Value") %>%
arrange(Condition, ID) %>%
clean_names("title")

# # A tibble: 12 x 5
# ID Condition Sad Anxious Happy
# <chr> <int> <int> <int> <int>
# 1 C_01 1 1 7 4
# 2 C_02 1 3 6 4
# 3 C_03 1 8 6 5
# 4 C_04 1 4 5 5
# 5 C_05 1 6 4 3
# 6 C_06 1 1 4 2
# 7 C_01 2 1 3 2
# 8 C_02 2 4 6 5
# 9 C_03 2 3 4 4
# 10 C_04 2 6 8 6
# 11 C_05 2 2 6 3
# 12 C_06 2 8 1 4

关于r - 在 R 中按条件堆叠多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69914276/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com