我的csv文件包含以下数据。
我想把这些数据放在数据框“dfSubClass”中。 之后我将找到唯一的主题列表作为“uniquesubject”,将唯一的类列表作为“uniqueclass”形式“dfSubClass”。 使用“uniquesubject”,“uniqueclass”和for循环我想创建所有主题和类组合
csv and expected data 我试过跟随,但它不起作用。
dfSubClass <- read.csv("SubjectClass.csv",header = TRUE)
uniquesubject = unique(planningItems["Subject"])
uniqueclass = unique(planningItems["Class"])
newDF <- data.frame()
for(Subject in 1:nrow(uniquesubject)){
for(Class in 1:nrow(uniqueclass)){
newDF = rbind(newDF,c(uniquesubject[Subject,],uniqueclass[Class,]))
}
}
这不给我想要的输出请帮助。
答案 0 :(得分:0)
我建议使用expand.grid
函数自动生成所有组合。
同样在您的代码unique(planningItems["Subject"])
中,它将返回一个数据框,这对于这种情况实际上并不是一个好主意。矢量会更好。
这是我的代码:
uniquesubject = unique(dfSubClass$Subject)
uniqueclass = unique(dfSubClass$Class)
newDF=expand.grid(uniquesubject,uniqueclass)
如果使用for
循环,则代码中的主要问题与rbind
函数有关。这是我的代码:
uniquesubject = unique(dfSubClass$Subject)
uniqueclass = unique(dfSubClass$Class)
newDF = data.frame()
for (Subject in 1:length(uniquesubject)){
for (Class in 1:length(uniqueclass)){
newDF=rbind(newDF,data.frame("Subject"=uniquesubject[Subject],"Class"=uniqueclass[Class]))
}
}
我认为与您的代码的主要区别在于我在rbind()
内创建了一个数据框,而不是使用c()
创建一个向量。这是为了确保结果是数据帧结构而不是矩阵。