重新排列表格中的值

莫娜(Monah)AbouAlezz

我有一个巨大的表,它的行中有未安排的数据(相对于列的名称)。该表如下所示:

A  B  C
A1 B1 C1
A2 C2 NA
A3 C3 B3
NA B4 C4

我想知道是否有办法重新安排该表,以便所有以“ A”开头的值都在第一列上,而所有以“ B”开头的值都在第二列上,依此类推...

期望的结果将是这样的:

A  B  C
A1 B1 C1
A2 NA C2
A3 B3 C3
NA B4 C4
沙沙语

这是一种有效的解决方法 data.table

library('data.table')
setDT(df1)  # assign data table by reference
# melt df1 data with unique id for each row
df1 <- melt( data = df1[, id := .I], measure.vars = setdiff( names(df1), 'id' ))  
# assign variable = NA which has value = NA, and variable = column_names for other values
df1[, variable := gsub("[0-9]", "", value)]
# rearrange df1 into multiple columns and remove NA and id columns
dcast(df1, "id ~ variable", value.var = "value")[, `:=` (`NA` = NULL, id = NULL ) ][]

输出:

#     A  B  C
# 1: A1 B1 C1
# 2: A2 NA C2
# 3: A3 B3 C3
# 4: NA B4 C4

数据:

df1 <- read.table(text = "
           A  B  C
           A1 B1 C1
           A2 C2 NA
           A3 C3 B3
           NA B4 C4",
           header = TRUE, stringsAsFactors = FALSE) 

编辑:

使用上面的数据。

library('data.table')
setDT(df1)[, D:= c( NA_character_)] # add column D
df1[, id := .I] # add unique id for each row
nm <- copy( setdiff( names(df1), 'id' ) ) # get column names and remove id
df1 <- dcast( data = melt( data = df1, measure.vars = nm)[, variable := gsub("[0-9]", "", value)],
              formula = "id ~ variable", 
              # subsetting is done because, two NA values are passed to the aggregate function two times ( column D and A for row-4; column C and D for row-2 ). 
              # you can check it using this: function(x) print(x)
              fun = function(x)x[1],  
              value.var = "value",
              fill = NA_character_ )[, id := NULL ][]
# check for number of columns
if( ncol(df1) > length(nm) ){
  df1[, `NA` := NULL ] # remove extra NA column
  nm <- setdiff(names(df1), 'NA') # remove extra column name: NA
} 
# rename columns efficiently by reference
setnames( df1, nm)

输出

print(df1)
#     A  B  C  D
# 1: A1 B1 C1 NA
# 2: A2 NA C2 NA
# 3: A3 B3 C3 NA
# 4: NA B4 C4 NA

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

来自分类Dev

在Mathematica中重新排列嵌套列表

来自分类Dev

在Flutter中重新排列列表图

来自分类Dev

重新排列列表中的元素

来自分类Dev

重新排列NumPy数组中的值

来自分类Dev

重新排列HTML表格

来自分类Dev

使用Linq重新排列表格数据

来自分类Dev

如何使用R重新排列表格

来自分类Dev

python根据子列表值重新排列列表中的元素

来自分类Dev

在python中重新排列值在列表中的位置,而无需编写重复而繁琐的代码

来自分类Dev

Python:对列表中具有相同值的数字进行计数和重新排列

来自分类Dev

重新排列行值

来自分类Dev

如何重新排列表单中的漏勺字段?

来自分类Dev

Terraform:在输出文件中重新排列我的列表

来自分类Dev

重新排列字典列表中的字典键

来自分类Dev

T-SQL重新排列1 ... n中的值

来自分类Dev

在数组数组中重新排列值

来自分类Dev

重新排列多个ViewHolder RecycleVIew列表

来自分类Dev

R:如何重新排列列表对象

来自分类Dev

R:重新排列列表,purrr

来自分类Dev

重新排列数据框列表

来自分类Dev

在angularjs中对表格的行进行排序或重新排列(拖放)

来自分类Dev

在cmd中重新排列数组元素

来自分类Dev

在PySpark中重新排列列

来自分类Dev

重新排列dom中的html元素

来自分类Dev

在Python中重新排列数组

来自分类Dev

如何重新排列图例中的项目?

来自分类Dev

重新排列图库中的fancybox项目

来自分类Dev

在jQuery中重新排列html表列

来自分类Dev

在PySpark中重新排列RDD

TOP 榜单

热门标签

归档