- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在数据帧上使用 reshape2 函数 dcast。其中一个变量是某些级别未出现在数据框中的因素,但我会在创建的新列中包含所有值。
例如说我运行以下
library(reshape2)
dataDF <- data.frame(
id = 1:6,
id2 = c(1,2,3,1,2,3),
x = c(rep('t1', 3), rep('t2', 3)),
y = factor(c('A', 'B', 'A', 'B', 'B', 'C'), levels = c('A', 'B', 'C', 'D')),
value = rep(1)
)
dcast(dataDF, id + id2 ~ x + y, fill = 0)
id id2 t1_A t1_B t2_B t2_C
1 1 1 1 0 0 0
2 2 2 0 1 0 0
3 3 3 1 0 0 0
4 4 1 0 0 1 0
5 5 2 0 0 1 0
6 6 3 0 0 0 1
id id2 t1_A t1_B t1_C t1_D t2_A t2_B t2_C t2_D
1 1 1 1 0 0 0 0 0 0 0
2 2 2 0 1 0 0 0 0 0 0
3 3 3 1 0 0 0 0 0 0 0
4 4 1 0 0 0 0 0 1 0 0
5 5 2 0 0 0 0 0 1 0 0
6 6 3 0 0 0 0 0 0 1 0
最佳答案
尝试添加 drop = FALSE
到您的 dcast 调用,以便不会丢弃未使用的因子级别:
dcast(dataDF, id ~ x + y, fill = 0, drop = FALSE)
id t1_A t1_B t1_C t1_D t2_A t2_B t2_C t2_D
1 1 1 0 0 0 0 0 0 0
2 2 0 1 0 0 0 0 0 0
3 3 1 0 0 0 0 0 0 0
4 4 0 0 0 0 0 1 0 0
5 5 0 0 0 0 0 1 0 0
6 6 0 0 0 0 0 0 1 0
dcast
你想用什么函数来
aggregate
,在这种情况下,您需要
length
:
data2 <- dataDF[,1:3]
dcast(data2, id ~ x + y, fill = 0, drop = FALSE, fun.aggregate = length)
tidyr
和
dplyr
而不是
reshape2
:
library(tidyr)
library(dplyr)
dataDF %>% left_join(expand.grid(x = levels(dataDF$x), y = levels(dataDF$y)), .) %>%
unite(z, x, y) %>%
spread(z, value, fill = 0) %>%
na.omit
expand.grid
完成 x 和 y 的所有组合并合并,然后我们
unite
将它们合并为一列 z,然后我们
spread
它们出来,然后从 id 列中删除 NA:
id id2 t1_A t1_B t1_C t1_D t2_A t2_B t2_C t2_D
1 1 1 1 0 0 0 0 0 0 0
2 2 2 0 1 0 0 0 0 0 0
3 3 3 1 0 0 0 0 0 0 0
4 4 1 0 0 0 0 0 1 0 0
5 5 2 0 0 0 0 0 1 0 0
6 6 3 0 0 0 0 0 0 1 0
关于R:使用 dcast 时包括没有条目的因素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33040961/
我有一张这样的 table , > head(dt2) Weight Height Fitted interval limit value 1 65.6 174.0 71.9120
我有以下 data.table library(data.table) testdt <- data.table(var1=rep(c("a", "b"), e=3), p1=1:6, p2=11:1
是否可以重新排序数据帧的列,这是 dcast() 调用的结果 前任。 鉴于数据: > dput(copyOfRes) structure(list(docName = c("doc2", "doc1"
我正在尝试为每种类型的 gridNumber 的每种类型的元素取一个具有特定值的列。和 dcast它以便从元素列创建 3 个单独的列。我不确定如何做到这一点。 输入: df % spread(elem
我有一个表需要重新格式化。该表如下所示: date ItemID NewPrice Sale Amount 1-1 1 5 3 1-1
我喜欢使用 dcast 函数(reshape2 包)来返回 reshape 数据框,但不起作用。在我的例子中: #Data set X% select(-dummy) %>% group_by
我想根据“主导”变量来分隔变量。在以下情况下为 x3: set.seed(2) df = data.frame(x1 = sample(4), x2 = sample(4), x3 = sample(
我有以下形式的数据框: time1 % mutate(time2 = factor(time2, levels = rev(unique(time2)))) %>% dcast(time2 ~
所以我得到了如下所示的数据: id year principal interest 1: 011000600 2013 0.00 0.00 2: 01100
这个问题在这里已经有了答案: Transpose / reshape dataframe without "timevar" from long to wide format (8 个回答) 4年前关
我有以下情况。考虑以下 df: mymatrix mymatrix Patient marker Number Visit 1 B1 A 1 baseline
使用 dcast 时,如何根据列“Col”指定列顺序? df <- dcast(x, ID ~ ColumnName, value.var = "Answer") 我需要解决方案不特定于数据,因为 x
这是关于对包含数字和文本的列名称进行排序。我有一个来自 dcast 的数据框并有 200 行。我有订购问题。 列名称采用以下格式: names(DF) <- c('Testname1.1', 'Tes
我坚持使用 dcast 函数;我正在尝试为每个计数年的许多物种的个体创建一个总和表。 我有一个包含 3 列的数据框:(1)年份(因子),(2)物种名称(因子),以及(3)计数(数字)。 Year
我正在使用 dcast library(reshape2) 中的函数封装以转换一个简单的三列表格 df = data.table(id = 1:1e6, var = c('
我在数据帧上使用 reshape2 函数 dcast。其中一个变量是某些级别未出现在数据框中的因素,但我会在创建的新列中包含所有值。 例如说我运行以下 library(reshape2) dataDF
我有以下data.frame: group <- sample(c("egyptian", "american", "irish", "australian"), 50, TRUE) E <- c(r
我不知道是否使用 dcast()是正确的方法,但我想 reshape 以下 data.frame: df z,你基本上会这样做: x z ya yb 1 p1 14 1*max*
这个问题已经有答案了: 已关闭10 年前。 Possible Duplicate: This R reshaping should be simple, but dcast来自reshape2无需公式
我有以下数据框: z dcast(z, id ~ item, value.var="freq") id x y z 1 1 4 3 2 2 2 4 4 1 关于r - 使用 dcast 加宽
我是一名优秀的程序员,十分优秀!