我在R遇到问题,希望有人可以帮助我。
我有一个400行的数据帧和2448列。我只是想用列的新顺序创建一个新的数据帧,所以我编写了以下脚本:
Daten_ausgewaehlt_weniger_sort <- Daten_ausgewaehlt_weniger[,c("id", "p_sex", "p_age", "p_single", "p_mothertongue", "p_mothertongue_other",
"p_courseofstudies_yes_no", "p_courseofstudies", "p_occupation")]
(不同的是,在我的真实剧本中,我在c-vector中拥有所有2448列,而不仅仅是这里显示的9列。)
当我尝试运行时,我收到以下错误消息:
[.data.frame
中的错误(Daten_ausgewaehlt_weniger,c(&#34; id&#34;,&#34; p_sex&#34;, :选择了未定义的列
我用这个函数搜索了错误拼写的列名:
setdiff(names(Daten_ausgewaehlt_weniger), c("id", "p_sex", "p_age", "p_single", "p_mothertongue", "p_mothertongue_other",
"p_courseofstudies_yes_no", "p_courseofstudies", "p_occupation"))
首先我发现了一个错误的列名,但我更正了它,现在setdiff说&#34;字符(0)&#34;。因此,所有列名都应该正确定义。但是,我仍然会选择#34;未定义的列&#34;。
我不知道错误是什么。我认为这是一件非常容易的事,但我找不到解决办法。 如果有人可以帮助我,或者有我能尝试的想法,我会很高兴。
提前致谢(对不起我的英语)!
答案 0 :(得分:0)
这可能对您有所帮助:
Library(data.table)
#1 make the df to datatable format
setDT(Daten_ausgewaehlt_weniger)
#2
Daten_ausgewaehlt_weniger_sort <- Daten_ausgewaehlt_weniger[, c("id", "p_sex", "p_age", "p_single", "p_mothertongue", "p_mothertongue_other",
"p_courseofstudies_yes_no", "p_courseofstudies", "p_occupation")]
# alternative way and probably easier way would be just to go based on the number of columns name order
Daten_ausgewaehlt_weniger_sort <- Daten_ausgewaehlt_weniger[, c(3, 5, 1, 14:19)]# basically you reorder the column names based on their order place number in your original file ,i.e. Daten_ausgewaehlt_weniger
#3 you can also use setcolorder()
setcolorder(Daten_ausgewaehlt_weniger, c(3, 5, 1, 14:19))
# one way to get the real order of your column names would be:
as.list(names(Daten_ausgewaehlt_weniger))# you will get the list of the col names with their corresponding col number