[英]Transforming Dataset with only 0 and 1 values
我不确定该怎么称呼,所以我将尽力描述问题所在。 我有一个仅由0和1组成的数据框。因此,对于每个人,我不用一列具有因式值的列(例如,低价,4个房间)
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20 V21
1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 1 0
2 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 1
3 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0
4 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0
如何转换R中的数据集,以便创建新列(房间数#)并为1(在第4列中)的位置赋予vhigh值? 我需要为此而准备的多个指数型自变量。 21列代表1000多个观测值的6个变量。 应该是这样的
PurchaseP. NumberofRooms ...
1. vhigh. 4
2. low. 4
3. vhigh. 1
4. vhigh. 2
只是在这里为前2个全功能变量做过,但基本上如此重复,每个功能变量具有3-4个可能的阶乘值。
V1:V4 =购买价格,V5:V8 =房间数,V9:V11 =楼层,依此类推
在我脑海中这样的事情可能会起作用
这行得通吗,还是有一种更简单的方法? 如何在R中对此进行编码?
您可以使用功能which()类似于
lapply(df, function(x) { %now x is a row
idx = which(x == 1)[1]
return(idx)
})
有趣的部分是在每行上使用which(x ==1)
。 这将为您提供包含一个索引的所有索引的数组。 其中的第一个可以用于您的情况(假设每行只有一个1),否则,需要讨论聚合。 然后,通过为各个索引指定一个合理的名称,可以将结果列转换为因子。
如果数据集每行包含一个1,这是一个非常简单的问题
根据您的图片在此处输入您的数据(请修改您的问题以输入代码而不是图片)
df = data.frame(r1 = 0, r2 = 1, r3 = 0)
rownames(df)<- 1
然后,您只需要将列数与房间号相加即可得出权重
df$room = df$r1*1 + df$r2 * 2 + df$r3 *3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.