2

これは、私には答えが見つからないように見える興味深い質問です。さっそく始めましょう。以下から作成されたデータ フレームを取得する必要があります。

TPA <- ddply(MT,~plot,summarise,TPA=length(unique(tree.number))*50)
> TPA

plot  TPA
1   10A  700
2   10B 1000
3    1A  900
4    1B  950
5    2A  950
6    2B  650
7    3A  650
8    3B 1350
9    4A 1450
10   4B 1350
11   5A  850
12   5B 1100
13   6A 1050
14   6B  550
15   7A  850
16   7B  800
17   8A 2450
18   8B  950
19   9A 1150
20   9B 1000

これを次のように変換します。

y <- list(one=c(900,950), two=c(950,650), three=c(650,1350), four=c(1450,1350),     five=c(850,1100), six=c(1050,550), seven=c(850,800), eight=c(2450,950), nine=c(1150,1000), ten=c(700,1000))
> y
$one
[1] 900 950

$two
[1] 950 650

$three
[1]  650 1350

$four
[1] 1450 1350

$five
[1]  850 1100

$six
[1] 1050  550

$seven
[1] 850 800

$eight
[1] 2450  950

$nine
[1] 1150 1000

$ten
[1]  700 1000

データ フレームの 1A は、リストの「1」に対応することに注意してください。リストからデータ フレームに逆方向に移動する方法は知っていますが、データ フレームからリストに移動する方法がわかりません。関数にフィードするリストを必要とする関数があります。完全を期すために、リストを使用する部分を次に示します。

yi.bar <- unlist(lapply(y,mean))
s2i <- unlist(lapply(y,var))

助言がありますか?

ありがとうございました!

4

2 に答える 2

3

これは非常に簡単なsplit操作です。アドオン パッケージは必要ありません。

split(dat$TPA,as.numeric(gsub("[^0-9]","",dat$plot)))

#$`1`
#[1] 900 950
# 
#$`2`
#[1] 950 650
#
#$`3`
#[1]  650 1350
#...

そして、数値をテキスト表現に変換するタスクに取り組むことを考えている人がいれば、あなたはパンチに打ちのめされています。

http://socserv.mcmaster.ca/jfox/Papers/numbers2words.pdf

于 2013-09-13T00:51:31.353 に答える
1

から数値を抽出しますplot

TPA$plot_num = as.numeric(regmatches(TPA$plot, regexpr("\\d+", TPA$plot, perl=TRUE)))

次に、それは本当に単純なdlply呼び出しです。

TPA_split = dlply(TPA, .(plot_num), function(df) df$TPA)

出力:

> TPA_split
$`1`
[1] 900 950

$`2`
[1] 950 650

$`3`
[1]  650 1350

$`4`
[1] 1450 1350

$`5`
[1]  850 1100

$`6`
[1] 1050  550

$`7`
[1] 850 800

$`8`
[1] 2450  950

$`9`
[1] 1150 1000

$`10`
[1]  700 1000
于 2013-09-13T00:44:48.413 に答える