Ale*_*off 15 r factors reshape
我有一个数据框,其中一个特定列具有一组特定值(比方说,1,2,...,23).我想要做的是从这个布局转换为一个框架,其中框架将有额外的23(在这种情况下)列,每个列代表一个因子值.这些列中的数据将是布尔值,表示特定行是否具有给定的因子值...要显示特定示例:
来源框架:
ID DATE SECTOR
123 2008-01-01 1
456 2008-01-01 3
789 2008-01-02 5
... <more records with SECTOR values from 1 to 5>
Run Code Online (Sandbox Code Playgroud)
所需格式:
ID DATE SECTOR.1 SECTOR.2 SECTOR.3 SECTOR.4 SECTOR.5
123 2008-01-01 T F F F F
456 2008-01-01 F F T F F
789 2008-01-02 F F F F T
Run Code Online (Sandbox Code Playgroud)
我在循环中做这个没有问题,但我希望有更好的方法.到目前为止reshape()
没有产生预期的结果.非常感谢帮助.
Sha*_*ane 15
我会尝试绑定另一个名为"value"的列并设置value = TRUE
.
df <- data.frame(cbind(1:10, 2:11, 1:3))
colnames(df) <- c("ID","DATE","SECTOR")
df <- data.frame(df, value=TRUE)
Run Code Online (Sandbox Code Playgroud)
然后做一个重塑:
reshape(df, idvar=c("ID","DATE"), timevar="SECTOR", direction="wide")
Run Code Online (Sandbox Code Playgroud)
使用该reshape
函数的问题是缺失值的缺省值是NA(在这种情况下,您将必须迭代并用FALSE替换它们).
否则,您可以cast
在reshape
包中使用(请参阅此问题以获取示例),并将默认值设置为FALSE
.
df.wide <- cast(df, ID + DATE ~ SECTOR, fill=FALSE)
> df.wide
ID DATE 1 2 3
1 1 2 TRUE FALSE FALSE
2 2 3 FALSE TRUE FALSE
3 3 4 FALSE FALSE TRUE
4 4 5 TRUE FALSE FALSE
5 5 6 FALSE TRUE FALSE
6 6 7 FALSE FALSE TRUE
7 7 8 TRUE FALSE FALSE
8 8 9 FALSE TRUE FALSE
9 9 10 FALSE FALSE TRUE
10 10 11 TRUE FALSE FALSE
Run Code Online (Sandbox Code Playgroud)