2016-08-17 6 views
-1

いくつかの関連する質問を見ましたが、本当に必要なものは何も教えてくれませんでした(おそらく私はそれを理解できませんでした)。それは方法3つの以上の都市であることを除いてデータフレームのサブセットに関数を適用する

Date City A City B City C 
8/17  55  65 75 
8/18  48  85 23 

は、私は次のようなデータのFRAMを持っています。私は、データフレーム内のすべての列に日付以外の関数を適用したい - 私は各列に関数を適用することができますトリックを行うが、私はすべてに関数を適用する表記のいくつかの種類を探しています(列名の異なるDFを収容するために)日付列を除きます。

適用しようとしていましたが、変形しましたが、運はありませんでした。私はRと約1ヶ月間作業していたので、それほどうまくいきません(まだ!)。

事前に感謝の意を表することができます。

+0

データを最初に長い形式に溶かすことができます。 'df、id.vars = 'Date')' – tcash21

+0

'sapply(df [、 - 1]、function(i)...)'ライブラリ(reshape2) – Sotos

答えて

1

あなただけdf[,-1]に適用する必要があります。

df=data.frame(Date=c("A","B"), City_A=c(55,48),City_B=c(65,85),City_C=c(75,23)) 
apply(df[,-1],1,sum) 
[1] 195 156 

をそして、あなたはあなたの列のインデックスが、ただ名前がわからない場合は、あなたが使用することができます。 -(which(colnames(df)=="Date"))代わりの-1

apply(df[,-(which(colnames(df)=="Date"))],1,sum) 
[1] 195 156 

あなたがlapplyバージョンを好む場合は、

lapply(df[,-(which(colnames(df)=="Date"))],sum) 
012を使用することができます

これはリストを返します

+1

もし 'data.frame'を扱っているのなら、' apply'ではなく 'lapply'を使う方が安全でしょう。 –

+0

私は答えに追加します – Arault

関連する問題