2017-08-09 6 views
0

... merge()または他の基底R関数を使用します。行の値と列の名前を一致させ、各列の最後の値を抽出します

は、例えば、ここでは2つのデータフレームです:

私は V1の行に対応する列の最後の値で V4を持ちたい
V1 V2 V3 
1 DDPC 1747 57.19 
2 DDSG 1466 68.16 
3 DDG 2312 43.2 
4 DDL 2058 48.56 
5 DDUR 1779 56.14 
6 DDTH 1883 53.06 
7 DDAC 2020 49.47 

      DDG DDL DDO DDUR DDAC DDMG DDSG DDTH DDPC DDSUP 
2014-08-05 56.49 61.96 43.81 46.975 51.070 52.27 36.320 NA 1920.21 1364.44 
2014-08-06 56.40 61.88 43.50 46.860 50.850 52.01 36.305 NA 1920.24 1352.94 
2014-08-07 55.79 61.53 43.30 46.310 50.880 51.79 36.105 NA 1909.57 1343.21 
2014-08-08 56.29 61.71 43.78 46.530 50.800 52.27 36.545 NA 1931.59 1334.40 
2014-08-11 56.40 61.95 44.41 46.920 51.190 52.89 36.725 NA 1936.92 1352.42 

 V1 V2 V3 V4 
1 DDPC 1747 57.19 1936.92 
2 DDSG 1466 68.16 36.725 
3 DDG 2312 43.2 56.40 
4 DDL 2058 48.56 61.95 
5 DDUR 1779 56.14 46.92 
6 DDTH 1883 53.06 NA 
7 DDAC 2020 49.47 51.19 

thisに見えたが、適切に適用できませんでした。

編集 - また、V3df1から取得し、df2の対応する列名の下に割り当てます。V1

+2

これはR.では非常に基本的な操作だけで、 'DF1する$ V4 <です - 非公開に(DF2 [nrow(DF2) 、as.character(df1 $ V1)]) 'doを実行する必要があります –

+0

ありがとう@DavidArenburg。適用することによって、私はそのトピックで与えられた提案を実装することを意味しました。 – AK88

+0

@DavidArenburg、 'df1'から' V3'列を受け取り、 'df2'の' V1'にマッチするそれぞれの列名の下でどのように割り当てることができますか? – AK88

答えて

1

これを試してみてください -

dfa <- data.frame(V1 = letters[1:4], V2 = sample(10,4), V3 = sample(10,4)) 
dfb <- data.frame(a = sample(10,4),b = sample(10,4), c=sample(10,4), d=sample(10,4)) 
dfa['V4'] = unlist(sapply(dfa['V1'],function(x){dfb[nrow(dfb),x]})) 
1
> dput(A) 
structure(list(V1 = c("DDPC", "DDSG", "DDG", "DDL", "DDUR", "DDTH", 
"DDAC"), V2 = c("1747", "1466", "2312", "2058", "1779", "1883", 
"2020"), V3 = c("57.19", "68.16", "43.2", "48.56", "56.14", "53.06", 
"49.47")), row.names = c(NA, -7L), .Names = c("V1", "V2", 
"V3"), class = "data.frame") 

> dput(B) 
structure(list(Date = c("2014-08-05", "2014-08-06", "2014-08-07", 
"2014-08-08", "2014-08-11"), DDG = c("56.49", "56.4", "55.79", 
"56.29", "56.4"), DDL = c("61.96", "61.88", "61.53", "61.71", 
"61.95"), DDO = c("43.81", "43.5", "43.3", "43.78", "44.41"), 
    DDUR = c("46.975", "46.86", "46.31", "46.53", "46.92"), DDAC = c ("51.07", 
"50.85", "50.88", "50.8", "51.19"), DDMG = c("52.27", "52.01", 
"51.79", "52.27", "52.89"), DDSG = c("36.32", "36.305", "36.105", 
"36.545", "36.725"), DDTH = c(NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_), DDPC = c("1920.21", 
"1920.24", "1909.57", "1931.59", "1936.92"), DDSUP = c("1364.44", 
"1352.94", "1343.21", "1334.4", "1352.42")), .Names = c("Date", 
"DDG", "DDL", "DDO", "DDUR", "DDAC", "DDMG", "DDSG", "DDTH", 
"DDPC", "DDSUP"), row.names = c(NA, -5L), class = "data.frame") 

コード:

A[,"V4"]=unlist(B[nrow(B),match(A[,1],names(B))]) 
    A 
     V1 V2 V3  V4 
    1 DDPC 1747 57.19 1936.92 
    2 DDSG 1466 68.16 36.725 
    3 DDG 2312 43.2 56.4 
    4 DDL 2058 48.56 61.95 
    5 DDUR 1779 56.14 46.92 
    6 DDTH 1883 53.06 <NA> 
    7 DDAC 2020 49.47 51.19 
関連する問題