我有一个宽格式的数据帧,在不同的日期范围内重复测量.在我的例子中,有三个不同的时期,都有相应的值.例如,第一测量(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,但我似乎无法弄清楚如何以这种特殊方式将多组度量变量映射到单个值列集.
我的数据集如下所示:
unique.id abx.1 start.1 stop.1 abx.2 start.2 stop.2 abx.3 start.3 stop.3 abx.4 start.4
1 1 Moxi 2014-01-01 2014-01-07 PenG 2014-01-01 2014-01-07 Vanco 2014-01-01 2014-01-07 Moxi 2014-01-01
2 2 Moxi 2014-01-01 2014-01-02 Cipro 2014-01-01 2014-01-02 PenG 2014-01-01 2014-01-02 Vanco 2014-01-01
3 3 Cipro 2014-01-01 2014-01-05 Vanco 2014-01-01 2014-01-05 Cipro 2014-01-01 2014-01-05 Vanco 2014-01-01
4 4 Vanco 2014-01-02 2014-01-03 Cipro 2014-01-02 2014-01-03 Cipro 2014-01-02 2014-01-03 PenG 2014-01-02
5 5 Vanco 2014-01-01 2014-01-02 PenG 2014-01-01 2014-01-02 PenG 2014-01-01 2014-01-02 Cipro 2014-01-01
stop.4 intervention …Run Code Online (Sandbox Code Playgroud) 我有一个广泛的数据框架,我需要收集或融入高大的数据帧.我坚持的部分是我有一组需要保持关联/分组的列.
每个表单提交有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) 我知道之前已经问过这个问题,但我不太明白.
我有一个如下所示的数据集:
Precinct Crime 2000 2001 2002 2003
1 Murder 3 1 2 2
1 Rape 12 5 10 11
1 Burglary 252 188 297 403
2 Murder 4 2 1 0
Run Code Online (Sandbox Code Playgroud)
以及每年列出的每项犯罪的价值.
我正在尝试将其重新排列为更简单的集合,如下所示:
Precinct Crime Year Value
1 Murder 2000 3
1 Rape 2000 12
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?我知道我应该使用tidyr gather,但推断多个键的解决方案并不适合我.
我们有学区的数据,其中的列是特定于当地的信息(例如,免费和减价午餐的百分比)和相应的全州值。
dat <- tribble(
~state.poverty, ~state.EL, ~state.disability, ~state.frpl, ~local.poverty, ~local.frpl, ~local.disability, ~local.EL,
12.50592, 0.08342419, 0.12321831, 0.4495395, 25.23731, 0.6415712, 0.140739, 0.1469898)
dat
# A tibble: 1 x 8
state.poverty state.EL state.disability state.frpl local.poverty local.frpl local.disability local.EL
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 12.5 0.0834 0.123 0.450 25.2 0.642 0.141 0.147
Run Code Online (Sandbox Code Playgroud)
我们想重塑它,使它看起来像这样。
demog state local
<chr> <dbl> <dbl>
1 poverty 12.5 25.2
2 EL 0.0834 0.147
3 disability 0.123 0.141
4 frpl 0.450 0.642
Run Code Online (Sandbox Code Playgroud)
似乎 pivot_longer 应该能够处理的事情,但到目前为止我还没有取得太大的成功。有什么建议?
我有一个关于data.table' melt和dcast多列的问题.我在StackOverFlow上浏览过,但很多类似的帖子都不是我想要的.我将在下面解释.
首先,data是关于问题的原因和价值量.这是我的一部分data:
ID Type Problem1 Value1 Problem2 Value2 Problem3 Value3
1 A X 500 Y 1000 Z 400
2 A X 600 Z 700
3 B Y 700 Z 100
4 B W 200 V 200
5 C Z 500 V 500
6 C X 1000 W 100 V 900
Run Code Online (Sandbox Code Playgroud)
第二,ID是独一无二的.Type包含三个(A,B,和C).有5个问题.
以ID == 1作为一个例子.这是Type A …
我有一个购物车数据,看起来像下面的示例数据框:
sample_df<-data.frame(
clientid=1:10,
ProductA=c("chair","table","plate","plate","table","chair","table","plate","chair","chair"),
QuantityA=c(1,2,1,1,1,1,2,3,1,2),
ProductB=c("table","doll","shoes","","door","","computer","computer","","plate"),
QuantityB=c(3,1,2,"",2,"",1,1,"",1)
)
#sample data frame
clientid ProductA QuantityA ProductB QuantityB
1 1 chair 1 table 3
2 2 table 2 doll 1
3 3 plate 1 shoes 2
4 4 plate 1
...
10 10 chair 2 plate 1
Run Code Online (Sandbox Code Playgroud)
我想将其转换为不同的格式,如下所示:
#ideal data frame
clientid ProductNumber Product Quantity
1 1 A chair 1
2 1 B table 3
3 2 A table 2
4 2 B doll 1
...
11 6 A chair 1
... …Run Code Online (Sandbox Code Playgroud) 这里已经解决了收集多组列的问题:收集多组列,但在我的情况下,列不是唯一的.
我有以下数据:
input <- data.frame(
id = 1:2,
question = c("a", "b"),
points = 0,
max_points = c(3, 5),
question = c("c", "d"),
points = c(0, 20),
max_points = c(5, 20),
check.names = F,
stringsAsFactors = F
)
input
#> id question points max_points question points max_points
#> 1 1 a 0 3 c 0 5
#> 2 2 b 0 5 d 20 20
Run Code Online (Sandbox Code Playgroud)
第一列是id,然后我有很多重复的列(原始数据集有133列):
我想结束这个结构:
expected <- data.frame(
id = c(1, …Run Code Online (Sandbox Code Playgroud) 我有使用gather从宽转换为长的代码,但我必须逐列执行此操作。我想使用 pivot_longer 将宽多列收集到多个长列中,而不是逐列。
例如,列 hf_1、hf_2、hf_3、hf_4、hf_5、hf_6 需要转换为 2 列(hf_com - 此列具有来自宽 hf 列的值 1,2,3,4,5,6)和 (hf_com_freq -此列的值为 1)。
对于列 ac_1、ac_2、ac_3、ac_4、ac_5、ac_6,同样需要发生。这些列需要转换为 2 列(ac_com - 此列的值来自宽 ac 列,值为 1,2,3,4,5,6)和(ac_com_freq - 此列的值为 1)。
列 cs_1、cs_2、cs_3、cs_4、cs_5、cs_6、cs_7、cs_8 也需要发生同样的情况。这些列需要转换为 2 列(cur_sal - 此列的值来自宽 cs 列,值为 1,2,3,4,5,6,7,8)和(curr_sal_freq - 此列的值为 1)。
列 se_1、se_2、se_3、se_4、se_5、se_6、se_7、se_8 也需要发生同样的情况。这些列需要转换为 2 列(exp_sal - 此列的值是 1,2,3,4,5,6,7,8 来自宽 se 列)和(exp_sal_freq - 此列的值为 1)
我试过看:
和:
但我无法获得我需要的多个更长的列。
这是输入数据:
structure(list(np_id = c("81", "83", "85", "88", "1", "2"), np_look_work = c("yes",
"yes", "yes", "yes", "yes", "yes"), np_current_work = c("no", …Run Code Online (Sandbox Code Playgroud)