首页 > 解决方案 > 在 R 中设置数据框

问题描述

我目前在以正确的方式设置我的数据框时遇到一些问题。我想以以下列Participant ID、SpeakerDialect (TSpeaker)、SpeakerNumber(TSpeaker) 和Score 结尾。

我从谷歌表单得到的输出是 4 列分数和一列带有时间戳(参与者 ID)。现在麻烦来了。我想添加一些关于他们给数据框打分的视频的信息。我通过使用以下代码使其工作 - 但此处不包括时间戳。添加时间戳时,它完全搞砸了。这是一个重复测量设计,因此相同的时间戳将在最终数据帧中重复 4 次


trustworth1 <- read.csv('Danskernes holdninger til politiske udsagn 1.csv')
trustworth1 <- trustworth1 %>% select(Hvor.troværdig.er.personen., Hvor.troværdig.er.personen..1, Hvor.troværdig.er.personen..2, Hvor.troværdig.er.personen..3)


TSpeaker <- c('2', '3', '4', '1')
TDialect <- c('1', '2', '2', '1')

trustworth1 <- trustworth1 %>% t()

trustworth1 <- cbind(TSpeaker, TDialect, trustworth1) %>% 
  as.tibble()

trustworth1 <- unite(trustworth1, Score, starts_with('V'), sep = ", ", remove = FALSE, na.rm = FALSE)

trustworth1 <- trustworth1 %>% select(TSpeaker,TDialect, Score)

trustworth1 <- separate_rows(trustworth1, c(Score), convert = FALSE)

测试数据框

TimeStamp <- c(1, 2, 3, 4, 5, 6, 7)
Speaker1 <- c(4, 7, 9, 3, 2, 4, 9)
Speaker2 <- c(7, 1, 9, 0, 2, 5, 10)
Speaker3 <- c(3, 1, 9, 2, 9, 5, 10)
Speaker4 <- c(1, 1, 6, 0, 6, 5, 1)

df <- data.frame(TimeStamp, Speaker1, Speaker2, Speaker3, Speaker4)

说话者 1 的方言是 1

说话者 2 的方言是 2

说话者 3 的方言是 1

说话者 4 的方言是 2

理想情况下,我最终会得到一个数据框,每个参与者有 4 行,每个参与者的评级一个

原始数据:

TimeStamp
<chr>
Speaker2
<int>
Speaker3
<int>
Speaker4
<int>
Speaker1
<int>
1   2020/12/07 11:33:39 AM CET  3   8   6   9
2   2020/12/07 12:16:33 PM CET  5   5   5   5
3   2020/12/07 12:29:11 PM CET  6   7   8   9
4   2020/12/07 12:47:39 PM CET  7   8   8   9
5   2020/12/07 1:04:01 PM CET   5   5   5   5
6   2020/12/07 1:05:33 PM CET   0   8   9   5
6 rows

有任何想法吗?

标签: rdataframe

解决方案


使用示例数据集,我想你想要这样的东西?你可以使用 'speaker' 'score' 而不是 var 和 val

require(dplyr)
require(tidyr)

df %>% head 
df %>%  gather(var, val, Speaker1:Speaker4) %>%  
  head 

TimeStamp      var val
1         1 Speaker1   4
2         2 Speaker1   7
3         3 Speaker1   9
4         4 Speaker1   3
5         5 Speaker1   2
6         6 Speaker1   4

推荐阅读