R 是否可以直接向cast()提供值?
我想向R 是否可以直接向cast()提供值?,r,reshape,R,Reshape,我想向cast()函数提供一些从数据帧派生的值,而不必实际将其保存在data.frame中。据我所知,我必须这样做: df$value <- ifelse(df$x > 0, 1, 0) cast(df, row ~ col, value = "value") 但这不起作用。有什么想法吗 我可以这样做: cast(cbind(df, list(value = ifelse(df$x > 0, 1, 0))), row ~ col, value = "value") 但是感觉
cast()
函数提供一些从数据帧派生的值,而不必实际将其保存在data.frame
中。据我所知,我必须这样做:
df$value <- ifelse(df$x > 0, 1, 0)
cast(df, row ~ col, value = "value")
但这不起作用。有什么想法吗
我可以这样做:
cast(cbind(df, list(value = ifelse(df$x > 0, 1, 0))), row ~ col, value = "value")
但是感觉有点笨拙
编辑:我发现上述笨拙的解决方案可以简化:
cast(cbind(df, value = ifelse(df$x > 0, 1, 0)), row ~ col)
不过仍然有笨拙黑客的味道。
cast
不受欢迎。您应该使用dcast
。另外,value.var
不能接受表达式,它只是在names(df)
@agstudy 1)中需要一个或多个值。cast
未被弃用。restrape
和restrape2
仍保持不变,可以从两者中进行选择。如果您不同意,请引用官方资料2)如果您知道答案,您可以自由发布dcast
解决方案,但恐怕它也有相同的限制。为什么不提供一些示例数据,以便每个人都可以轻松测试想法?@TMS,为什么是官方资料?我不是代码维护者。可能软件包仍在维护中,但这里的人通常使用reformae2
。使用dcast的解决方案:dcast(transform(df,value=ifelse(x>0,1,0)),row~col,value.var=“value”)
@agstudy,1)如果您声明的内容像“cast不推荐使用,您应该使用dcast”这样强烈,这根本不是真的。在没有官方消息来源的情况下,你不应该散布这样的言论。如果你说“这里的人通常使用整形2”,那就好多了。2) 这几乎和我贴的一样,谢谢你的transform
,不过它更优雅了!
cast(cbind(df, value = ifelse(df$x > 0, 1, 0)), row ~ col)