替换r中列表内 Dataframe 的NA标题/名称

jxct1oxe  于 2022-12-25  发布在  其他
关注(0)|答案(2)|浏览(161)

我有麻烦重现这个错误与 Dataframe 的例子列表,所以请原谅我...
假设您有 Dataframe 列表:

#Example data frame columns
Image <- c("001", "001", "001", "001", "002", "002", "002", "002", "003", "003", "003", "003")
Size <- c("Big", "Small", "Medium", "Tiny", "Big", "Small", "Medium", "Tiny", "Big", "Small", "Medium", "Tiny")
n <- c(111778, 56, 7099, 3, 3682081, 88, 9078, 7, 198346, 422, 30077, 8)

#make example data frame
data <- data.frame(Image, Size, n)

#Split dataframe into a list of dataframes
df <- split(data, f = data$Image) 
df

输出:

$`001`
  Image   Size      n
1   001    Big 111778
2   001  Small     56
3   001 Medium   7099
4   001   Tiny      3

$`002`
  Image   Size       n
5   002    Big 3682081
6   002  Small      88
7   002 Medium    9078
8   002   Tiny       7

等等
查看 Dataframe 的标题如何为$001和$002等。

问题

我自己的 Dataframe 列表命名为NA
我怎么
1.根据行名称重命名 Dataframe 列表。
例如,如果在每个 Dataframe 中有一个名为Label的列,重复

$`NA`
Label   Area
00017    ...
00017
00017
etc

#New dataframe
$`NA`
Label
00021
00021
00021

如何用相应的标签替换NA?例如00017和00021等。
我不能返回并使用split函数重命名,因为我的数据处理的某些部分将它们重命名为NA,所以它需要在所有这些发生之后。

h9vpoimq

h9vpoimq1#

这可能是一个新手的答案,因为我是R的新手,但在过去,我只是使用

df_merged <- as.data.frame(data.table::rbindlist(df_original_list))

然后使用基于标签的分割函数。

df <- split(df_merged, f = df_merged$Label)

重命名列表中的元素。
可能有一个更好的和更有经验的人谁可以回答,但嘿,它的工作,所以我只是滚动与它。

pnwntuvh

pnwntuvh2#

您将它们称为rowname,但它们看起来更像是Label列中的值。

> names(df) <- "NA"
> df
$`NA`
  Image   Size      n
1   001    Big 111778
2   001  Small     56
3   001 Medium   7099
4   001   Tiny      3

$<NA>
  Image   Size       n
5   002    Big 3682081
6   002  Small      88
7   002 Medium    9078
8   002   Tiny       7

$<NA>
   Image   Size      n
9    003    Big 198346
10   003  Small    422
11   003 Medium  30077
12   003   Tiny      8

> for(i in 1:length(df)) names(df)[i] = df[[i]][1,1]

> df
$`001`
  Image   Size      n
1   001    Big 111778
2   001  Small     56
3   001 Medium   7099
4   001   Tiny      3

$`002`
  Image   Size       n
5   002    Big 3682081
6   002  Small      88
7   002 Medium    9078
8   002   Tiny       7

$`003`
   Image   Size      n
9    003    Big 198346
10   003  Small    422
11   003 Medium  30077
12   003   Tiny      8

相关问题