如果我有一个大的DF(数百和数百)列,其中不同的col_names按字母顺序随机分布:
df.x <- data.frame(2:11, 1:10, rnorm(10))
colnames(df.x) <- c("ID", "string", "delta")
Run Code Online (Sandbox Code Playgroud)
如何按字母顺序按col_name排序所有数据(垂直)?
基本上,我有数百个CSV(sep ="|")文本文件,我需要将它们的列读入单个df,按字母顺序排列这些列,然后使用其他一些dplyf函数来获得最终结果.除了如何按字母顺序排列列之外,我已经解决了所有问题.我不想按字母排序(上下)列,而是col_names的实际垂直方向及其相应的数据.类似于在Excel中剪切和粘贴整列数据.
例如,我回顾了这种方法,但这是按字母顺序排序的行,这不是我想要做的.
谢谢!
希望我不会复制以前存在的一些问题.我正在使用32位Win7机器,RV = 3.2.0,dplyr V = 0.4.1,RStudio 0.98.1103.
有问题的文件是两个读入变量的CSV文件(x,y/sep ="|",header = TRUE,stringsasFactors = FALSE),它们来自同一个Oracle表.用于生成两个文件的查询提取了完全相同的变量(29).
identical(names(x), names(y) > TRUE
Run Code Online (Sandbox Code Playgroud)
但是,当我加载dplyr包并尝试使用'bind_rows'作为dat < - bind_rows(x,y)时,我收到以下错误:
> bind_rows(x,y)
Error: incompatible type (data index: 2, column: 'rmnumber', was collecting: integer (dplyr::Collecter_Impl<13>), incompatible with data of type: factor
In addition: Warning messages:
1: In rbind_all(list(x, ...)) :
Unequal factor levels: coercing to character
2: In rbind_all(list(x, ...)) :
Unequal factor levels: coercing to character
3: In rbind_all(list(x, ...)) :
Unequal factor levels: coercing to character
Run Code Online (Sandbox Code Playgroud)
我查看了列'rmnumber'并验证了该列中的所有内容都是预期的数字或"NA",也与表中的NULL值一样.我也尝试了bind_rows(list(x,y))并返回了相同的错误.
原始"rbind"在这些变量上运行良好,没有明显的精度损失. …
我有大约 50-60 个 Excel 工作簿位于一个目录中。这些 Excel 文件大体上都是一样的。有两张工作表,一张带有说明,另一张在所有工作表中具有相同的整齐数据。列/变量 A 到 J 是我实际想要提取的数据,但我愿意将其全部读入 data.frame。数据输出到 A 到 N 列。
我正在编写一个脚本来提取所有原始数据,到目前为止一切顺利。我的脚本的一部分使用 list.files 的标准方法来构建文件名的“df”。然后,我使用 'lapply' 将所有 excel 文件读入一个列表。现在麻烦来了。
我想使用 dplyr::bind_rows (但我愿意接受其他建议)然后将所有行绑定在一起,因为它们是相同的并共享相同的标题。这在我的概念证明中非常有效。当我使用 dplyr::bind_rows 的 .id 参数时,我得到 1 到 j 作为 id var,它对应于列表中的 data.frame 位置。
files.list <- list.files(pattern='*.xlsx') # list file names in directory
df.list <- lapply(files.list, read_excel) # read excel into a list of dfs
df <- bind_rows(df.list, .id = "id") # bind the rows of the dfs together
Run Code Online (Sandbox Code Playgroud)
是否可以获取实际文件名而不是从 data.frame 读取的列表中的位置?如果是这样,我该怎么做?
我有一个向量:
df <- c(65225, 108249, 156508, 29321, 37905, 50175, 62484, 69943, 73723,
555, 12, 331, 1000000, 15232, 1433, 441009, 11141414, 050505)
Run Code Online (Sandbox Code Playgroud)
我想找出向量每个元素的长度。
我怎样才能做到这一点?我尝试使用 apply-family 中的一些东西,但不断出现参数错误。我会用一个吗seq_along(length(df))?
基本上,输出将是一列数字和一列每个观察的长度。然后,我将能够仅对那些df$dfLen > 5.