我有一个看起来像这样的数据框:
import React, { Component } from 'react';
import Nav from './app-components/nav'
import Sidebar from './app-components/sidebar'
import Compose from './app-components/compose'
import Chat from './app-components/chat'
export class home extends Component {
constructor(props) {
super(props)
this.state = {
}
}
render() {
return (
<div className="layout">
<Nav />
<Sidebar />
<Chat />
<Compose />
</div>
)
}
}
export default home
我的目标是将其重塑为一个数据框,按给出的顺序将这些类收集到一个列表中。例如,输出看起来像:
import errno
import glob
path = '/path/to/key_files/*.txt'
SubjectName = 'predetermined'
files = glob.glob(path)
for filename in files:
try:
with open(filename, 'r+') as f:
for line in f:
if SubjectName in line:
print(line)
except IOError as exc:
if exc.errno != errno.EISDIR:
raise
或者,或者是一个两列数据帧,其中第一列包含id,第二列依次包含 class id
1 foo 1
2 bar 1
3 baz 1
4 baz 2
5 bar 2
6 foo 2
7 foo 3
8 foo 3
9 foo 3
变量列表。
我已经尝试过使用reshape库中的> output
id var1 var2 var3
1 1 foo bar baz
2 2 baz bar foo
3 3 foo foo foo
,但是并不能完全返回所需的输出。
关于如何在R中执行此操作的任何想法?数据如下:
id
答案 0 :(得分:2)
我们通过'id'创建一个序列列,然后使用spread
library(tidyverse)
test %>%
group_by(id) %>%
mutate(rn = str_c("var", row_number())) %>%
spread(rn, class)
# A tibble: 3 x 4
# Groups: id [3]
# id var1 var2 var3
# <dbl> <chr> <chr> <chr>
#1 1 foo bar baz
#2 2 baz bar foo
#3 3 foo foo foo
以防万一
test %>%
group_by(id) %>%
mutate(rn = paste0("var", row_number())) %>%
spread(rn, class)
或
test %>%
group_by(id) %>%
mutate(rn = paste("var", row_number(), sep="")) %>%
spread(rn, class)
或者使用data.table
,使用rowid
和dcast
library(data.table)
dcast(setDT(test), id ~ paste0("var", rowid(id)), value.var = 'class')
# id var1 var2 var3
#1: 1 foo bar baz
#2: 2 baz bar foo
#3: 3 foo foo foo
如果我们要使用base R
,则将ave
与reshape
一起使用
reshape(transform(test, rn = paste0("var", ave(seq_along(id), id,
FUN = seq_along))), idvar = 'id', direction = 'wide', timevar = 'rn')
注意:当重复数不相等时,所有方法都可以使用
答案 1 :(得分:0)
您可以通过 CNode [
title=All data,
key=__ALL__,
expanded=false,
leaf=false,
checked=false,
isFolder=true,
disabled=false,
hideCheckbox=false,
visible=true,
tooltip=null,
children=[
CNode [
title=AAAA,
key=20,
expanded=false,
leaf=false,
checked=false,
isFolder=true,
disabled=false,
hideCheckbox=false,
visible=true,
tooltip=null,
children=[
CNode [
title=A1,
key=20010,
expanded=false,
leaf=true,
checked=false,
isFolder=false,
disabled=false,
hideCheckbox=false,
visible=true,
tooltip=,
children=null],
CNode [
title=A2,
key=20020,
expanded=false,
leaf=true,
checked=false,
isFolder=false,
disabled=false,
hideCheckbox=false,
visible=true,
tooltip=,
children=null],
CNode [
title=A3,
key=20030,
expanded=false,
leaf=true,
checked=false,
isFolder=false,
disabled=false,
hideCheckbox=false,
visible=true,
tooltip=,
children=null]
和split
有趣的列id
来填充数据框。
cbind
注意:使用data.frame(id=unique(d$id), t(do.call(cbind, split(d$class, d$id))))
# id X1 X2 X3
# 1 1 foo bar baz
# 2 2 baz bar foo
# 3 3 foo foo foo
来避免不需要的因素。
数据
cbind.data.frame