我有来自在线调查的数据,受访者经历了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) 我有一个宽格式的数据帧,在不同的日期范围内重复测量.在我的例子中,有三个不同的时期,都有相应的值.例如,第一测量(Value1)是在测量期间从DateRange1Start到DateRange1End:
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,但我似乎无法弄清楚如何以这种特殊方式将多组度量变量映射到单个值列集.
我有一个这样的数据框:
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.我还看了将多列合并到整洁的数据中,但我认为我的情况有所不同.
我有一个广泛的数据框架,我需要收集或融入高大的数据帧.我坚持的部分是我有一组需要保持关联/分组的列.
每个表单提交有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中,我有数据,其中每个人有多个会话日期,以及一些测试的分数,但这是全部在一行.我想改变它,所以我有多行人员信息,但只有一个会话日期和相应的测试分数,并为每个人这样做.此外,每个人可能已完成不同数量的会话.
例如:
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) 我担心我的头衔并不能完全反映我的问题.让我尽我所能地解释我的问题.这是我数据的一部分.
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) 我试图了解"融化"在复杂情况下是如何运作的.我已经看到很多关于在非常简单的情况下使用这些软件包的帖子和博客 - 但不是更难的.例如:
假设我在数据帧中有以下数据:
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)