2017-11-09 4 views
-4

タイトルには、各エントリの値のリストを持つ列「値」があります。私は、各行のリストの最小値を見つけて、新しい列に追加したいと思います。以下は、この回答に基づいて(他のものの中で)試したことですExtract the maximum value within each group in a dataframe。 残念ながら、私は、列全体の最小値を見つけ出し、すべての行に同じ最小値を適用することしかできません。テーブル内の列は、各行のリストで構成され、最小のリストを見つけて新しい列に追加します。

df <- df[,'minVal' := min(unlist(df$values))] 
+1

についての情報をお読みくださいとどのように[再現性を与える:

これを試してみてください例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5963610)。これは他の人があなたを助けることをはるかに容易にします。 – Jaap

+0

サンプル入力データを使用して[再現可能な例](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)を提供した場合は、理想的には何らかの 'dput()')。 – MrFlick

+0

私の謝罪は、私がStackoverflowを使用して以来、しばらくしています。エリックは下で答えて、彼の例はモデルをキャプチャします。 – Fonti

答えて

2

あなたが発見したように、minは列全体の最小値を返します。各エントリのようなサウンドはリストであり、リストから除外するとすべての値のベクトルが得られます。そのうちminが最小値を返します。

代わりに、リストの各エントリにapplyminを入力して、最小値を取得することができます。

さらに、:=割り当てが行われています。 <-を使用してdfに割り当てる必要はありません。data.tableでは、列を直接参照することができます。df$valuesは使用しないでください。 [良い質問をする方法](http://stackoverflow.com/help/how-to-ask)

library(data.table) 

df <- data.table(a = 1:3, values = list(1:6, 2:4, 9:11)) 
df[, minVal := sapply(values, min)] 
df 
# a  values minVal 
# 1: 1 1,2,3,4,5,6  1 
# 2: 2  2,3,4  2 
# 3: 3  9,10,11  9 
+0

それはトリックをした、ありがとう! – Fonti

関連する問題