0
ように私には見えますdata.tableを持っている:私は_...各ABCのためにやりたいことはあるR data.tableルール
>DT
ID Year Value ABC_1 ABC_2 ABC_3
1: 3 2015 5 0 1 0
2: 4 2015 2 1 0 1
3: 5 2015 1 0 1 1
:
> unique(DT[Year == 2015 & ABC_1 == 1, .(Year = Year, ABC = ABC_1, N = .N, MEAN = mean(Value))])
Year ABC N MEAN
1: 2015 1 1 2
> unique(DT[Year == 2015 & ABC_2 == 1, .(Year = Year, ABC = ABC_2, N = .N, MEAN = mean(Value))])
Year ABC N MEAN
1: 2015 1 2 3
> unique(DT[Year == 2015 & ABC_3 == 1, .(Year = Year, ABC = ABC_3, N = .N, MEAN = mean(Value))])
Year ABC N MEAN
1: 2015 1 2 1.5
私はABC _...で20以上のカラムを持っていますので、この文をforループに入れたいと思います。私の問題は、選択/ルールが列名を必要とすることです。それはそれで動作しません:
> abc_name <- names(DT)[names(DT) %like% 'ABC']
> abc_name
[1] "ABC_1" "ABC_2" "ABC_3"
> abc_row<- data.table(Year=0, ABC=0, N=0, MEAN=0)
> for (i in 1: length(abc_name)){
+
+ temp_row <- unique(DT[Year == 2015 & abc_name[i] == 1, .(Year = Year, ABC = abc_name[i], N = .N, MEAN = mean(Value))])
+ abc_row <- rbind(abc_row, temp_row)
+ }
> abc_row
Year ABC N MEAN
1: 0 0 0 0
temp_rowは空です... 私はABC_1
でabc_name[I]
を変更すると、それは動作します:
> abc_name <- names(DT)[names(DT) %like% 'ABC']
> abc_name
[1] "ABC_1" "ABC_2" "ABC_3"
> abc_row<- data.table(Year=0, ABC=0, N=0, MEAN=0)
> for (i in 1: length(abc_name)){
+
+ temp_row <- unique(DT[Year == 2015 & ABC_1 == 1, .(Year = Year, ABC = ABC_1, N = .N, MEAN = mean(Value))])
+ abc_row <- rbind(abc_row, temp_row)
+ }
> abc_row
Year ABC N MEAN
1: 0 0 0 0
2: 2015 1 1 2
3: 2015 1 1 2
4: 2015 1 1 2
どのように私は、forループでabc_name
を使用することができますが私のスクリプトは動作しますか? 私の質問を理解し、誰かが私を助けてくれることを願っています。 lapply
を使用して名前ベクトル(「abc_name」)を通じて