- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
检查不同的线程,我从 stats 包中了解了 reshape 函数,我在“虚拟”数据集上使用它没有问题,并设法将其从长数据集转换为宽数据集。但是,我不知道为什么它不适用于我的数据,它几乎是相同的对象,数据类型相似。我很感激你们帮我弄清楚它表现的原因。
无论如何,这没有问题:
> df <- data.frame(
+ year = c(rep(2000, 12), rep(2001, 12)),
+ month = rep(1:12, 2),
+ values = rnorm(24)
+ )
# year month values
1 2000 1 1.52435428
2 2000 2 -0.89394797
3 2000 3 0.75965499
4 2000 4 1.21497443
df_wide <- reshape(df, idvar="year", timevar="month", v.names="values", direction="wide")
# year values_1 values_2 values_3 values_4 values_5 values_6 values_7 values_8 values_9 values_10 values_11 values_12
1 2000 1.524354 -0.893948 0.759655 1.2149744 -1.3237634 -0.08681768 0.5208436 -0.2602807 0.6378904 -0.9852600 -1.128048 -0.1466028
2 2001 1.913969 -1.966720 -0.947688 0.8375891 -0.1015944 1.11812723 -1.5164472 -0.7089485 0.5975851 0.2514546 -1.578210 -0.9044418
my_df <- dput(head(experiment, 30))
structure(list(transcript = c("TR100743-c0_g1_i3", "TR100743-c0_g1_i3",
"TR100743-c0_g1_i3", "TR100743-c0_g1_i3", "TR100743-c0_g1_i3",
"TR100987-c0_g1_i2", "TR100987-c0_g1_i2", "TR100987-c0_g1_i2",
"TR100987-c0_g1_i2", "TR100987-c0_g1_i2", "TR101301-c4_g1_i16",
"TR101301-c4_g1_i16", "TR101301-c4_g1_i16", "TR101301-c4_g1_i16",
"TR101301-c4_g1_i16", "TR102190-c1_g1_i1", "TR102190-c1_g1_i1",
"TR102190-c1_g1_i1", "TR102190-c1_g1_i1", "TR102190-c1_g1_i1",
"TR102346-c0_g2_i1", "TR102346-c0_g2_i1", "TR102346-c0_g2_i1",
"TR102346-c0_g2_i1", "TR102346-c0_g2_i1", "TR102352-c4_g2_i5",
"TR102352-c4_g2_i5", "TR102352-c4_g2_i5", "TR102352-c4_g2_i5",
"TR102352-c4_g2_i5"), hours = c(0, 2, 8, 24, 48, 0, 2, 8, 24,
48, 0, 2, 8, 24, 48, 0, 2, 8, 24, 48, 0, 2, 8, 24, 48, 0, 2,
8, 24, 48), exp.change = c(NA, -43.1958273184645, -61.3014008509066,
964.925115099619, -52.7060728326392, NA, -46.2563848585369, 3.29396898799807,
-99.9994681489801, 106710484.025972, NA, -29.6341333478577, 522.224859380388,
40.4737694947169, -1.34388206141046, NA, -18.7670826937756, 5.49472822880452,
55.1072690537026, 33.5824607349752, NA, -99.999962131178, 789697313.24393,
18.6337471833012, 52.4442959208125, NA, -31.3334122297108, 9.64745757892995,
28.48552519881, 70.5808772231999), response = c("Primary", "Primary",
"Primary", "Primary", "Primary", "Primary", "Primary", "Primary",
"Primary", "Primary", "Primary", "Primary", "Primary", "Primary",
"Primary", "Tertiary", "Tertiary", "Tertiary", "Tertiary", "Tertiary",
"Primary", "Primary", "Primary", "Primary", "Primary", "Primary",
"Primary", "Primary", "Primary", "Primary")), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -30L))
# transcript hours exp.change response
1 TR100743-c0_g1_i3 0 NA Primary
2 TR100743-c0_g1_i3 2 -43.2 Primary
3 TR100743-c0_g1_i3 8 -61.3 Primary
4 TR100743-c0_g1_i3 24 965. Primary
5 TR100743-c0_g1_i3 48 -52.7 Primary
6 TR100987-c0_g1_i2 0 NA Primary
7 TR100987-c0_g1_i2 2 -46.3 Primary
8 TR100987-c0_g1_i2 8 3.29 Primary
9 TR100987-c0_g1_i2 24 -100.0 Primary
10 TR100987-c0_g1_i2 48 106710484. Primary
my_df_wide <- reshape(my_df, idvar = c("transcript", "response"), timevar = "hours", v.names="exp.change", direction = "wide")
# transcript response `exp.change.c(0, 2, 8, 24, 48)`
1 TR100743-c0_g1_i3 Primary NA
2 TR100987-c0_g1_i2 Primary NA
3 TR101301-c4_g1_i16 Primary NA
4 TR102190-c1_g1_i1 Tertiary NA
5 TR102346-c0_g2_i1 Primary NA
6 TR102352-c4_g2_i5 Primary NA
7 TR10396-c0_g1_i6 Primary NA
8 TR11844-c0_g2_i1 Secondary NA
9 TR12672-c1_g2_i1 Primary NA
10 TR12672-c1_g2_i2 Primary NA
最佳答案
使用 stats::reshape
reshape 数据可能很乏味。哈德利·威克姆和
他的团队花了相当多的时间来创建一个全面的解决方案。
首先是 reshape2
包,然后 tidyr
有 spread()
和 gather()
,
这些现在被替换为 pivot_wider()
和 pivot_longer()
.
这是您可以使用的方式 tidyr::pivot_wider()
为了达到这个结果,你似乎
要去。
library(tidyr)
pivot_wider(
my_df,
id_cols = c(transcript, response),
names_from = hours,
values_from = exp.change,
names_prefix = "exp.change_"
)
#> # A tibble: 6 x 7
#> transcript response exp.change_0 exp.change_2 exp.change_8 exp.change_24
#> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
#> 1 TR100743-… Primary NA -43.2 -61.3 965.
#> 2 TR100987-… Primary NA -46.3 3.29 -100.
#> 3 TR101301-… Primary NA -29.6 522. 40.5
#> 4 TR102190-… Tertiary NA -18.8 5.49 55.1
#> 5 TR102346-… Primary NA -100. 789697313. 18.6
#> 6 TR102352-… Primary NA -31.3 9.65 28.5
#> # … with 1 more variable: exp.change_48 <dbl>
我认为有专门的命令和两个转换(宽/长)的专用文档使得
tidyr
与
stats::reshape()
相比,命令更易于使用.
stats::reshape()
给出了奇怪的结果,因为它似乎在处理 my_df 作为
tibble
时遇到问题.除此之外,你的命令很好。只需添加
as.data.frame()
你很高兴去。
reshape(
as.data.frame(my_df),
idvar = c("transcript", "response"),
timevar = "hours",
v.names = "exp.change",
direction = "wide"
)
#> transcript response exp.change.0 exp.change.2 exp.change.8
#> 1 TR100743-c0_g1_i3 Primary NA -43.19583 -6.130140e+01
#> 6 TR100987-c0_g1_i2 Primary NA -46.25638 3.293969e+00
#> 11 TR101301-c4_g1_i16 Primary NA -29.63413 5.222249e+02
#> 16 TR102190-c1_g1_i1 Tertiary NA -18.76708 5.494728e+00
#> 21 TR102346-c0_g2_i1 Primary NA -99.99996 7.896973e+08
#> 26 TR102352-c4_g2_i5 Primary NA -31.33341 9.647458e+00
#> exp.change.24 exp.change.48
#> 1 964.92512 -5.270607e+01
#> 6 -99.99947 1.067105e+08
#> 11 40.47377 -1.343882e+00
#> 16 55.10727 3.358246e+01
#> 21 18.63375 5.244430e+01
#> 26 28.48553 7.058088e+01
但由于您似乎已经在使用 tidyverse
tidyr::pivot_wider()
似乎是最合适的。
关于r - 在 R 中将数据从长格式改成宽格式时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60080483/
我的应用程序从一个有 5 个选项卡的选项卡栏 Controller 开始。一开始,第一个出现了它的名字,但其他四个没有名字,直到我点击它们。然后根据用户使用的语言显示名称。如何在选项卡栏出现之前设置选
我有嵌套数组 json 对象(第 1 层、第 2 层和第 3 层)。我的问题是数据表没有出现。任何相关的 CDN 均已导入。该表仅显示部分。我引用了很多网站,但都没有解决我的问题。 之前我使用标准表来
我正在尝试设置要显示的 Parse PFLoginViewController。这是我的一个 View Controller 的类。 import UIKit import Parse import
我遇到了这个问题,我绘制的对象没有出现在 GUI 中。我知道它正在被处理,因为数据被推送到日志文件。但是,图形没有出现。 这是我的一些代码: public static void main(Strin
我有一个树状图,其中包含出现这样的词...... TreeMap occurrence = new TreeMap (); 字符串 = 单词 整数 = 出现次数。 我如何获得最大出现次数 - 整数,
因此,我提示用户输入变量。如果变量小于 0 且大于 10。如果用户输入 10,我想要求用户再次输入数字。我问时间的时候输入4,它说你输入错误。但在第二次尝试时效果很好。例如:如果我输入 25,它会打印
我已经用 css overflow 属性做了一个例子。在这个例子中我遇到了一个溢出滚动的问题。滚动条出现了,但没有工作意味着每当将光标移动到滚动条时,在这个滚动条不活动的时间。我对此一无所知,所以请帮
我现在正在做一个元素。当您单击一个元素时,会出现以下信息,我想知道如何在您单击下一个元素而不重新单击同一元素时使其消失....例如,我的元素中有披萨,我想单击肉披萨看到浇头然后点击奶酪披萨看到浇头和肉
我有一个路由器模块,它将主题与正则表达式进行比较,并将出现的事件与一致的键掩码链接起来。 (它是一个简单的 url 路由过滤,如 symfony http://symfony.com/doc/curr
这个问题在这里已经有了答案: 9年前关闭。 Possible Duplicate: mysql_fetch_array() expects parameter 1 to be resource, bo
我在底部有一个带有工具栏的 View ,我正在使用 NavigationLink 导航到该 View 。但是当 View 出现时,工具栏显示得有点太低了。大约半秒钟后,它突然跳到位。它只会在应用程序启
我试图在我的应用程序上为背景音乐添加一个 AVAudioPlayer,我正在主屏幕上启动播放器,尝试在应用程序打开时开始播放但出现意外行为... 它播放并立即不断创建新玩家并播放这些玩家,因此同时播放
这是获取一个数字,获取其阶乘并将其加倍,但是由于基本情况,如果您输入 0,它会给出 2 作为答案,因此为了绕过它,我使用了 if 语句,但收到错误输入“if”时解析错误。如果你们能提供帮助,我真的很感
暂停期间抛出异常 android.os.DeadObjectException 在 android.os.BinderProxy.transactNative( native 方法) 在 androi
我已经为猜词游戏编写了一些代码。它从用户输入中读取字符并在单词中搜索该字符;根据字符是否在单词中,程序返回并控制一些变量。 代码如下: import java.util.Random; import
我是自动化领域的新手。这是我的简单 TestNG 登录代码,当我以 TestNG 身份运行该代码时,它会出现 java.lang.NullPointerException,双击它会突出显示我导航到 U
我是c#程序员,我习惯了c#的封装语法和其他东西。但是现在,由于某些原因,我应该用java写一些东西,我现在正在练习java一天!我要创建一个为我自己创建一个虚拟项目,以便让自己更熟悉 Java 的
我正在使用 Intellij,我的源类是 main.com.coding,我的资源文件是 main.com.testing。我将 spring.xml 文件放入资源文件中。 我的测试类位于 test.
我想要我的tests folder separate到我的应用程序代码。我的项目结构是这样的 myproject/ myproject/ myproject.py moduleon
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) 已关闭 6 年前。 因此,我尝试比较 2 个值,一个
我是一名优秀的程序员,十分优秀!