首页 > 解决方案 > 将数据框中的列转换为类列表

问题描述

我正在尝试将数据框中的列转换为列表。

数据框是这种格式

State   combo
1   0,0,0,0,0,0
2   1,0,0,0,0,0
3   0,1,0,0,0,0
4   1,1,0,0,0,0
5   0,0,1,0,0,0
6   1,0,1,0,0,0
7   0,1,1,0,0,0

我需要做的是将“组合”列中的每一行更改为数字列表。所以我想要结束的是第 1 行等于c(0,0,0,0,0)等的东西。

到目前为止我的代码是......

list.combo<- read.csv("data")

rownames(list.combo) <- list.char$State

char.l <- list.char%>%
  select(combo)

标签: rlistdataframe

解决方案


这是一种方法tidyverse-

df %>% 
  separate_rows(combo, sep = ",") %>% 
  {split(as.numeric(.$combo), .$State)} %>% 
  setNames(paste0("State", seq_along(.)))

$State1
[1] 0 0 0 0 0 0

$State2
[1] 1 0 0 0 0 0

$State3
[1] 0 1 0 0 0 0

$State4
[1] 1 1 0 0 0 0

$State5
[1] 0 0 1 0 0 0

$State6
[1] 1 0 1 0 0 0

$State7
[1] 0 1 1 0 0 0

这是来自@thelatemail 评论的更好方法 -

strsplit(as.character(df$combo), ",") %>% 
  lapply(as.numeric) %>% 
  setNames(paste0("State", seq_along(.)))

数据 -

df <- read.table(text = "State   combo
1   0,0,0,0,0,0
2   1,0,0,0,0,0
3   0,1,0,0,0,0
4   1,1,0,0,0,0
5   0,0,1,0,0,0
6   1,0,1,0,0,0
7   0,1,1,0,0,0", header = T, stringsAsFactors = F)

推荐阅读