我正在尝试将数据框中的列转换为列表。
数据框是这种格式
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
我需要做的是将“ combo”列中的每一行更改为数字列表。所以我最后想要得到的是第1行等于c(0,0,0,0,0)
等的东西。
到目前为止,我的代码是...
list.combo<- read.csv("data")
rownames(list.combo) <- list.char$State
char.l <- list.char%>%
select(combo)
答案 0 :(得分:0)
这是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)