我的数据是:
phone colour length weight rating
100 5 3 3 0
200 1 4
303 3 30 9
302 2 43 0 2
106 43
203 23 3 1 7
我希望我的数据看起来像这样:
变量A(sort_by_model_100):
phone colour length weight rating
100 5 3 3 0
106 43
变量B(sort_by_model_200):
phone colour length weight rating
200 4 20 1 4
203 23 3 1 7
变量C(sort_by_model_300):
phone colour length weight rating
303 3 30 0 9
302 2 43 0 2
我的 R 代码:
data <- read.csv(file.choose(),header=TRUE)
sort_by_model_100 <- split (data, data$phone[100:200])
sort_by_model_200 <- split (data, data$phone[200:300])
sort_by_model_300 <- split (data, data$phone[300:400])
我收到此错误,但我的代码无效:
警告信息:
在split.default中(x = seq_len(nrow(x)),f = f,drop = drop,...):
数据长度不是拆分变量的倍数
请帮忙。
答案 0 :(得分:0)
您可以使用subset
:
var_a = subset(data, phone >= 100 & phone < 200)
var_b = subset(data, phone >= 200 & phone < 300)
等等。也许你可以改进代码以避免对范围进行硬编码。
答案 1 :(得分:0)
使用此数据
data<-data.frame(
phone=c(100,200,303,302,106,203),
colour=c(5,NA,3,2,43,23),
length=c(3,NA,30,43,NA,3),
weight=c(3,1,NA,0,NA,1),
rating=c(0,4,9,2,NA,7)
)
我会使用cut来创建一个表示模型类的因子
model<-cut(data$phone, breaks=c(100,200,300,400), include.lowest=T, right=F)
然后,您可以使用拆分创建子数据列表。框架
split(data, model)
这可能比一堆不同的data.frame变量更容易使用。