在R中将明细表(宽格式)转换为长格式,并仅选择一些行
我想在有X的情况下,为level和day的每个组合创建行 例如:在R中将明细表(宽格式)转换为长格式,并仅选择一些行,r,data-manipulation,R,Data Manipulation,我想在有X的情况下,为level和day的每个组合创建行 例如: dat <- data.frame(1:5, matrix( c("X", "-", "X", "-", "-", "X", "X", "-", "X", "-", "X", "-", "X", "-", "X", "-", "X", "-", "-", "-", "-", "-", "X", "X", "-"), 5, 5, byrow=T)) colnames(dat) <- c("lvl", "Mon", "
dat <- data.frame(1:5, matrix( c("X", "-", "X", "-", "-", "X", "X", "-", "X", "-", "X", "-", "X", "-", "X", "-", "X", "-", "-", "-", "-", "-", "X", "X", "-"), 5, 5, byrow=T))
colnames(dat) <- c("lvl", "Mon", "Tues", "Wed", "Thur", "Fri" )
如果您的计划存储为矩阵或数据框,则可以使用重塑2软件包:
我只需要添加id.vars=c来获得我想要的输出:meltSche,id.vars=clvl@snoram重塑2包中有很多选项。有一个很好的教程,请不要使用编辑:在您的文章;这不是一个论坛。每个问题都有详细的编辑历史记录,任何人都可以查看。另外,不要在你的帖子中发表社论;这就是评论的目的。不要把答案放在你的问题里;这就是答案所在。请在评论中保持礼貌;粗鲁是不能容忍的。首先我被要求编辑这篇文章,然后我因为编辑而被责骂。哈?这不是论坛。学习这里存在的惯例;不要带着你的坏习惯去论坛。我不是来争论的,只是我不知道你们到底想让我做什么?就让这篇文章保持原样,更仔细地写下下一个问题吧?既然编辑的绰号和社论化已经消失了,攻击性的评论也被删除了,这篇文章就这么好了。我们的要求是努力更好地理解我们在这里的工作方式,避免使用您可能在其他论坛环境中学习到的、在这里效果不佳的做法。这就是全部。
# generate a fake schedule
sched <- matrix(rbinom(25, 1, 1/2), 5,
dimnames = list(1:5, c("Mo", "Tu", "We", "Th", "Fr")))
library(reshape2)
melt(sched)
# Var1 Var2 value
# 1 1 Mo 0
# 2 2 Mo 0
# 3 3 Mo 1
# 4 4 Mo 0
# 5 5 Mo 1
# 6 1 Tu 0
# 7 2 Tu 1
# 8 3 Tu 1
# 9 4 Tu 0
# 10 5 Tu 1
# 11 1 We 1
# 12 2 We 1
# 13 3 We 1
# 14 4 We 0
# 15 5 We 0
# 16 1 Th 0
# 17 2 Th 1
# 18 3 Th 1
# 19 4 Th 0
# 20 5 Th 0
# 21 1 Fr 0
# 22 2 Fr 1
# 23 3 Fr 1
# 24 4 Fr 1
# 25 5 Fr 1
sched <- melt(sched)
sched[sched$value == 1, ]