相关疑难解决方法(0)

收集多组列

我有来自在线调查的数据,受访者经历了1-3次问题循环.调查软件(Qualtrics)记录在多列,也就是说这个数据,Q3.2的调查将在列Q3.2.1.,Q3.2.2.以及Q3.2.3.:

df <- data.frame(
  id = 1:10,
  time = as.Date('2009-01-01') + 0:9,
  Q3.2.1. = rnorm(10, 0, 1),
  Q3.2.2. = rnorm(10, 0, 1),
  Q3.2.3. = rnorm(10, 0, 1),
  Q3.3.1. = rnorm(10, 0, 1),
  Q3.3.2. = rnorm(10, 0, 1),
  Q3.3.3. = rnorm(10, 0, 1)
)

# Sample data

   id       time    Q3.2.1.     Q3.2.2.    Q3.2.3.     Q3.3.1.    Q3.3.2.     Q3.3.3.
1   1 2009-01-01 -0.2059165 -0.29177677 -0.7107192  1.52718069 -0.4484351 -1.21550600
2   2 2009-01-02 -0.1981136 -1.19813815  1.1750200 -0.40380049 -1.8376094  1.03588482
3   3 …
Run Code Online (Sandbox Code Playgroud)

r reshape dplyr qualtrics tidyr

97
推荐指数
5
解决办法
8万
查看次数

将多组测量列(宽格式)整形为单列(长格式)

我有一个宽格式的数据帧,在不同的日期范围内重复测量.在我的例子中,有三个不同的时期,都有相应的值.例如,第一测量(Value1)是在测量期间从DateRange1StartDateRange1End:

ID DateRange1Start DateRange1End Value1 DateRange2Start DateRange2End Value2 DateRange3Start DateRange3End Value3
1 1/1/90 3/1/90 4.4 4/5/91 6/7/91 6.2 5/5/95 6/6/96 3.3 
Run Code Online (Sandbox Code Playgroud)

我希望将数据重新整形为长格式,以便将DateRangeXStart和DateRangeXEnd列分组.因此,原始表中的1行在新表中变为3行:

ID DateRangeStart DateRangeEnd Value
1 1/1/90 3/1/90 4.4
1 4/5/91 6/7/91 6.2
1 5/5/95 6/6/96 3.3
Run Code Online (Sandbox Code Playgroud)

我知道必须有一种方法可以用reshape2/ melt/ recast/ 来做到这一点tidyr,但我似乎无法弄清楚如何以这种特殊方式将多组度量变量映射到单个值列集.

r reshape r-faq reshape2 tidyr

36
推荐指数
5
解决办法
1万
查看次数

将k列重新整形为2列,表示k个变量值的连续对

我有一个这样的数据框:

id y1 y2 y3 y4  
--+--+--+--+--
a |12|13|14|  
b |12|18|  |
c |13|  |  |
d |13|14|15|16  
Run Code Online (Sandbox Code Playgroud)

我想以这样的方式重塑,我以两列结束.以上示例将变为:

id from to  
--+----+--- 
a |12  |13  
a |13  |14  
a |14  |
b |12  |18
b |18  |  
c |13  |
d |13  |14  
d |14  |15  
d |15  |16  
Run Code Online (Sandbox Code Playgroud)

每个id年份都有一个'from'和'to'.
有人知道一个简单的方法吗?我试过用reshape2.我还看了将多列合并到整洁的数据中,但我认为我的情况有所不同.

r reshape data-management

9
推荐指数
2
解决办法
306
查看次数

在R中收集多组列

我有一个广泛的数据框架,我需要收集或融入高大的数据帧.我坚持的部分是我有一组需要保持关联/分组的列.

每个表单提交有2个用户,每个用户有3列数据.我想取这6列并基本上将它们分成3组,这样每个用户都是一个单独的观察.

这是我的数据或多或少的样本:

wide <- data.frame(
    form.ID     = c(1, 2), 
    entry.date  = c("2016-07-01", "2016-06-15"), 
    user.1      = c("Joe", "Sam"), 
    user.1.ID   = c("A1", "A2"), 
    user.1.data = c("foo", "lorem"),
    user.2      = c("Jane", "Sue"), 
    user.2.ID   = c("B1", "B2"),
    user.2.data = c("bar", "ipsum")
)

wide
#   form.ID entry.date user.1 user.1.ID user.1.data user.2 user.2.ID user.2.data
# 1       1 2016-07-01    Joe        A1         foo   Jane        B1         bar
# 2       2 2016-06-15    Sam        A2       lorem    Sue        B2       ipsum
Run Code Online (Sandbox Code Playgroud)

这是期望的最终状态:

#   form.ID  entry.date   user   user.ID   user.data
# 1       1  2016-07-01 …
Run Code Online (Sandbox Code Playgroud)

r tidyr

5
推荐指数
1
解决办法
1231
查看次数

在r中将一行转换为多行

在R中,我有数据,其中每个人有多个会话日期,以及一些测试的分数,但这是全部在一行.我想改变它,所以我有多行人员信息,但只有一个会话日期和相应的测试分数,并为每个人这样做.此外,每个人可能已完成不同数量的会话.

例如:

ID  Name  Session1Date  Score  Score  Session2Date  Score  Score
23  sjfd  20150904      2      3      20150908      5      7
28  addf  20150905      3      4      20150910      6      8
Run Code Online (Sandbox Code Playgroud)

至:

ID  Name  SessionDate  Score  Score
23  sjfd  20150904     2      3     
23  sjfd  20150908     5      7
28  addf  20150905     3      4
28  addf  20150910     6      8
Run Code Online (Sandbox Code Playgroud)

transpose r multiple-columns

4
推荐指数
1
解决办法
2168
查看次数

如何将来自不同列的数据整理成一个

我担心我的头衔并不能完全反映我的问题.让我尽我所能地解释我的问题.这是我数据的一部分.

pdpass begyr1 gvkey1 endyr1 begyr2 gvkey2 endyr2 begyr3 gvkey3 endyr3 begyr4 gvkey4 endyr4 begyr5 gvkey5 endyr5
-16348   1991  26005   1993   1994   8852   1996   1997   3708   2005     NA     NA     NA     NA     NA     NA
-16179   2006 174876   2006     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA
-16161   1993  30964   2005     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA
-15631   1996 111491   2006     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA     NA …
Run Code Online (Sandbox Code Playgroud)

r tidyr

3
推荐指数
1
解决办法
93
查看次数

在R中与dplyr,tidyr,reshape2复合熔融

我试图了解"融化"在复杂情况下是如何运作的.我已经看到很多关于在非常简单的情况下使用这些软件包的帖子和博客 - 但不是更难的.例如:

假设我在数据帧中有以下数据:

  CA UNIT      SCP    DATE1    TIME1   DESC1 ENTRIES1  EXITS1  
1 A002 R051 02-00-00 07-27-13 00:00:00 REGULAR  4209603 1443585
2 A002 R051 02-00-00 07-28-13 08:00:00 REGULAR  4210490 1443821
3 A002 R051 02-00-00 07-29-13 16:00:00 REGULAR  4211586 1444302
4 A002 R051 02-00-00 07-30-13 14:01:46   LOGON  4213192 1444700
5 A002 R051 02-00-00 07-30-13 16:00:00 REGULAR  4213333 1444737
6 A002 R051 02-00-00 08-01-13 00:00:00 REGULAR  4215894 1445274`
Run Code Online (Sandbox Code Playgroud)

并继续向右列(抱歉,我无法在代码块中正确格式化):

     `DATE2    TIME2     DESC2 ENTRIES2  EXITS2
1   07-27-13 08:00:00   REGULAR  4209663 1443616 
2   07-28-13 …
Run Code Online (Sandbox Code Playgroud)

r reshape2 dplyr tidyr

2
推荐指数
1
解决办法
435
查看次数