以前はデータフレームを行ごとに分割する必要がありましたが、今では 65 のデータフレームの巨大なリストがあります。
df_list = split(df, list(df$group))
new_col_name = c("A", "B","group")
df_list = lapply(df_list, setNames, nm=new_col_name)
df_list = lapply(df_list, function(x) x[-1,])
列 A (リスト内のすべてのデータフレームにわたって) を数値ではなく係数に変換したい。
>head(df_list)
$`0`
A B count
.3375E+03 .5295E+00 0
.3380E+03 .4412E+00 0
.3385E+03 .0123E+00 0
$`1`
A B count
.3370E+03 .4939E+00 1
.3375E+03 .5295E+00 1
.3380E+03 .5679E+00 1
$`2
A B count
.3370E+03 .4934E+00 2
.3375E+03 .5286E+00 2
.3380E+03 .5673E+00 2
等。
再現可能なデータを次に示します (簡単にするために、最初の変数を係数に変換しました)。
test = data.frame(A = c(".3375E+03", ".3380E+03", ".3385E+03"),
B = c(.5295E+00 , .4412E+00, .0123E+00),
C = c(0,0,0))
私は次のことを試しました:
for (i in df_list){
i$A = as.numeric(as.character(i$A))
}
しかし、どういうわけか、これは実際には df_list に割り当てられません:
> str(df_list[[1]])
'data.frame': 549 obs. of 3 variables:
$ A : Factor w/ 551 levels ".3370E+03",".3375E+03",..: 2 3 4 5 6 7 8 9 10 11 ...
apply()
または でそれを行う方法はおそらくありますがsapply()
、私はそれを理解できません。
ではfor(i in ...)
、それぞれi
が要素のコピーです。コピーに割り当てているだけで、オリジナルには影響しません。特定のオブジェクトを参照するには、名前またはインデックスを使用するのが最善です。したがって、コードを機能させる方法は次のとおりです。
for (i in seq_along(df_list)) {
df_list[[i]]$A = as.numeric(as.character(df_list[[i]]$A))
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加