在使用Tidyr进行重塑之前,先替换数据框多个响应列中的“ x”

麦克风

以下是一个简单的数据框。

Program <- c("A","B","C","D","E")
Apartment <- c("x","","","x","")
House <- c("x","","x","","")
Condo <- c("","x","","","x")
Cat <- c("x","","x","","")
Dog <- c("","x","","","")
Fish <- c("","x","","x","x")

DF1 <- data.frame(Program,Apartment,House,Condo,Cat,Dog,Fish)

使用此数据框,我想使用Tidyr创建下表。该表按住宿列出了每只宠物的数量。因此,对于那些拥有公寓的人来说,有一个实例是猫,而一个实例是鱼。

为了做到这一点,我首先必须在熔化数据之前用每列的宠物名替换“ x”。我想知道如何在一行代码或一个函数中跨所有列执行此操作。

使用Tidyr或Reshape2以下面的确切形式创建表时,我也遇到了麻烦。下表并不完全对齐,但每个数字都应在宠物名下面。因此,对于第一行,1应该在猫的下面,0应该在狗的下面,而1在鱼的下面,等等。)

      variable         Cat      Dog    Fish 
1     Apartment          1        0       1
2     House              2        0       0
3     Condo              0        1       2
阿克伦

我们可以尝试 dplyr/tidyr

library(dplyr)
library(tidyr)
DF1 %>% 
    gather(House, Val, Apartment:Condo) %>% 
    filter(Val!="") %>% 
    gather(Animals, Val2, Cat:Fish) %>%
    group_by(House, Animals) %>%
    summarise_each(funs(sum(.!='')), Val:Val2)  %>%
    spread(Animals, Val2) %>%
    select(-Val)   
#      House   Cat   Dog  Fish
#      <chr> <int> <int> <int>
#1 Apartment     1     0     1
#2     Condo     0     1     2
#3     House     2     0     0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

R:使用条件根据数据框Y中的值替换数据框X中的值

重塑熊猫数据框以反映隐式x值?

将“ <x”替换为“ x”

bash中$ x,$ [x],$ {x}之间的差异

基于数据框Y的列对数据框X中的列进行子集

为什么('x',)中的'x'比'x'=='x'快?

如果 (x, x, x) 中的任何值低于 x

JavaScript中的x> = x模式

magrittr中成语的x <-x%>%

在C ++中维护x * x

如何用 X 列中的相应值替换数据框中的所有值?

随机选择列中的 x(x 是固定的) 值并在 pyspark 数据框中将其替换为 0

当大于x时,将数据框中的值替换为nan吗?

如何在值x和y之间替换数据框中的值

细分不同的数据框并使用数据框作为x值

基于列表对 Python 3.x 数据框进行子集

使用单个x轴从一个数据框绘制多个图形-Python

X后退出响应

为什么对于整数,2 * x * x比Python 3.x中的2 *(x * x)快?

在Java中创建列表[xn,x-n + 1,...,x,x + 1,x + 2,... x + n]

Python列表中x + = x和x = x + x之间的区别

在R中,x [with(x,order(x $ CHROM)),]和x [order(x $ CHROM)),]有什么区别

替换 x:Type

对所有变量X和响应G进行回归分析,对R中一个数据框下的所有数据框进行回归分析

在f(x)中,x可以在f之前求值吗?

Keras中X的多个功能

使用字符串subs('x','w')而不是符号subs(x,w)进行符号替换

使用多个索引重塑熊猫数据框

Python:使用多个索引重塑数据框