精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

R語言進階之4:數據整形(reshape)

大數據
從不同途徑得到的數據的組織方式是多種多樣的,很多數據都要經過整理才能進行有效的分析,數據整形不僅僅是為了改善數據的外觀,也是進行一些統計分析和作圖前必要的步驟。數據整形和數據凝練/匯總往往密不可分,這是門學問,是R語言數據處理的內容之一。

 一、通過重新構建數據進行整形

數據整形最直接的思路就把數據全部向量化,然后按要求用向量構建其他類型的數據。這樣是不是會產生大量的中間變量、占用大量內存?沒錯。R語言的任何函數(包括賦值)操作都會有同樣的問題,因為R函數的參數傳遞方式是傳值不傳址,變量不可能原地址修改后再放回原地址。

矩陣和多維數組的向量化有直接的類型轉換函數: as.vector,向量化后的結果順序是先列后行再其他:

  1. > (x <- matrix(1:4, ncol=2))  #為節省空間,下面的結果省略了一些空行 
  2.      [,1] [,2] 
  3. [1,]    1    3 
  4. [2,]    2    4 
  5. > as.vector(x) 
  6. [1] 1 2 3 4 
  7. > (x <- array(1:8, dim=c(2,2,2))) 
  8. , , 1 
  9.      [,1] [,2] 
  10. [1,]    1    3 
  11. [2,]    2    4 
  12. , , 2 
  13.      [,1] [,2] 
  14. [1,]    5    7 
  15. [2,]    6    8 
  16. > as.vector(x) 
  17. [1] 1 2 3 4 5 6 7 8 

列表向量化可以用unlist,數據框本質是元素長度相同的列表,所以也用unlist:

  1. > (x <- list(x=1:3, y=5:10)) 
  2. $x 
  3. [1] 1 2 3 
  4. $y 
  5.  
  6. [1]  5  6  7  8  9 10 
  7. > unlist(x) 
  8. x1 x2 x3 y1 y2 y3 y4 y5 y6  
  9.  1  2  3  5  6  7  8  9 10  
  10. > x <- data.frame(x=1:3, y=5:7) 
  11. > unlist(x) 
  12. x1 x2 x3 y1 y2 y3  
  13.  1  2  3  5  6  7 

其他類型的數據一般都可以通過數組、矩陣或列表轉成向量。一些軟件包有自定義的數據類型,如果考慮周到的話應該會有合適的類型轉換函數。

二、transform 和 within函數

transform 函數對數據框進行操作,作用是為原數據框增加新的列變量。但應該注意的是“原數據框”根本不是原來的那個數據框,而是一個它的拷貝。下面代碼為airquality數據框增加了一列log.ozone,但因為沒有把結果賦值給原變量名,所以原數據是不變的:

  1. > head(airquality,2) 
  2.   Ozone Solar.R Wind Temp Month Day 
  3. 1    41     190  7.4   67     5   1 
  4. 2    36     118  8.0   72     5   2 
  5. > aq <- transform(airquality, loglog.ozone=log(Ozone)) 
  6. > head(airquality,2) 
  7.   Ozone Solar.R Wind Temp Month Day 
  8. 1    41     190  7.4   67     5   1 
  9. 2    36     118  8.0   72     5   2 
  10. > head(aq,2) 
  11.   Ozone Solar.R Wind Temp Month Day log.ozone 
  12. 1    41     190  7.4   67     5   1  3.713572 
  13. 2    36     118  8.0   72     5   2  3.583519 

transform可以增加新列變量,可以改變列變量的值,也可以通過NULL賦值的方式刪除列變量:

  1. > aq <- transform(airquality, loglog.ozone=log(Ozone), Ozone=NULLWindWind=Wind^2) 
  2. > head(aq,2) 
  3.   Solar.R  Wind Temp Month Day log.ozone 
  4. 1     190 54.76   67     5   1  3.713572 
  5. 2     118 64.00   72     5   2  3.583519 
  6.  
  7. > aq <- transform(airquality, loglog.ozone=log(Ozone), Ozone=NULLMonth=NULLWindWind=Wind^2) 
  8. > head(aq,2) 
  9.   Solar.R  Wind Temp Day log.ozone 
  10. 1     190 54.76   67   1  3.713572 
  11. 2     118 64.00   72   2  3.583519 

within 比 transform 靈活些,除數據框外還可以使用其他類型數據,但用法不大一樣,而且函數似乎也不夠完善:

  1. > aq <- within(airquality, { 
  2. + log.ozone <- log(Ozone) 
  3. + squared.wind <- Wind^2 
  4. + rm(Ozone, Wind) 
  5. + } ) 
  6. > head(aq,2) 
  7.   Solar.R Temp Month Day squared.wind log.ozone 
  8. 1     190   67     5   1        54.76  3.713572 
  9. 2     118   72     5   2        64.00  3.583519 
  10.  
  11. > (x <- list(a=1:3, b=letters[3:10], c=LETTERS[9:14])) 
  12. $a 
  13. [1] 1 2 3 
  14. $b 
  15. [1] "c" "d" "e" "f" "g" "h" "i" "j" 
  16. $c 
  17. [1] "I" "J" "K" "L" "M" "N" 
  18.  
  19. > within(x, {log.a <- log(a); d <- paste(b, c, sep=':'); rm(b)}) 
  20. $a 
  21. [1] 1 2 3 
  22. $c 
  23. [1] "I" "J" "K" "L" "M" "N" 
  24. $d 
  25. [1] "c:I" "d:J" "e:K" "f:L" "g:M" "h:N" "i:I" "j:J" 
  26. $log.a 
  27. [1] 0.0000000 0.6931472 1.0986123 
  28. > within(x, {log.a <- log(a); d <- paste(b, c, sep=':'); rm(b,c)}) 
  29. $a 
  30. [1] 1 2 3 
  31. $b   #為什么刪除兩個列表元素會得到這樣的結果? 
  32.  
  33. NULL 
  34. $c 
  35. NULL 
  36. $d 
  37. [1] "c:I" "d:J" "e:K" "f:L" "g:M" "h:N" "i:I" "j:J" 
  38. $log.a 
  39. [1] 0.0000000 0.6931472 1.0986123 

三、reshape、stack和unstack 函數

reshape是R base/stats的函數,主要用于數據框長格式和寬格式之間的轉換。reshape函數的參數很多,不容易記,牛人Hadley Wickham搞出reshape和reshape2包以后這個函數幾乎被人遺忘:

  1. reshape(data, varying = NULLv.names = NULLtimevar = "time"
  2.         idvar = "id"ids = 1:NROW(data), 
  3.         times = seq_along(varying[[1]]), 
  4.         drop = NULL, direction, new.row.names = NULL
  5.         sep = "."
  6.         split = if (sep == "") { 
  7.             list(regexp = "[A-Za-z][0-9]"include = TRUE
  8.         } else { 
  9.             list(regexp = sepinclude = FALSEfixed = TRUE)} 
  10.         ) 

既然可以被遺忘,那就等你走投無路的時候(估計不會有這樣的情況發生)再去了解它吧。

stack 和 unstack 的作用和reshape類似,用于數據框/列表的長、寬格式之間轉換。數據框寬格式是我們記錄原始數據常用的格式,類似這樣:

  1. > x <- data.frame(CK=c(1.1, 1.2, 1.1, 1.5), T1=c(2.1, 2.2, 2.3, 2.1), T2=c(2.5, 2.2, 2.3, 2.1)) 
  2. > x 
  3.    CK  T1  T2 
  4. 1 1.1 2.1 2.5 
  5. 2 1.2 2.2 2.2 
  6. 3 1.1 2.3 2.3 
  7. 4 1.5 2.1 2.1 

一般統計和作圖用的是長格式,stack可以做這個:

  1. > (xx <- stack(x)) 
  2.    values ind 
  3. 1     1.1  CK 
  4. 2     1.2  CK 
  5. 3     1.1  CK 
  6. 4     1.5  CK 
  7. 5     2.1  T1 
  8. 6     2.2  T1 
  9. 7     2.3  T1 
  10. 8     2.1  T1 
  11. 9     2.5  T2 
  12. 10    2.2  T2 
  13. 11    2.3  T2 
  14. 12    2.1  T2 

而unstack的作用正好和stack相反,但是要注意它的第二個參數是公式類型:公式左邊的變量是值,右邊的變量會被當成因子類型,它的每個水平都會形成一列:

  1. > unstack(xx, values~ind) 
  2.    CK  T1  T2 
  3. 1 1.1 2.1 2.5 
  4. 2 1.2 2.2 2.2 
  5. 3 1.1 2.3 2.3 
  6. 4 1.5 2.1 2.1 

四、reshape/reshape2 包

Hadley Wickham,牛人,很牛X的一個人,寫了很多R語言包,著名的有ggplot2, plyr, reshape/reshape2等。reshape2包是reshape包的重寫版,用reshape2就行,都在CRAN源中,用install.packages函數就可以安裝。reshape/reshape2的函數很少,一般用戶直接使用的是melt, acast 和 dcast 函數。

melt是溶解/分解的意思,即拆分數據。reshape/reshape2的melt函數是個S3通用函數,它會根據數據類型(數據框,數組或列表)選擇melt.data.frame, melt.array 或 melt.list函數進行實際操作。

如果是數組(array)類型,melt的用法就很簡單,它依次對各維度的名稱進行組合將數據進行線性/向量化。如果數組有n維,那么得到的結果共有n+1列,前n列記錄數組的位置信息,最后一列才是觀測值:

  1. > datax <- array(1:8, dim=c(2,2,2)) 
  2. > melt(datax) 
  3.   Var1 Var2 Var3 value 
  4. 1    1    1    1     1 
  5. 2    2    1    1     2 
  6. 3    1    2    1     3 
  7. 4    2    2    1     4 
  8. 5    1    1    2     5 
  9. 6    2    1    2     6 
  10. 7    1    2    2     7 
  11. 8    2    2    2     8 
  12.  
  13. > melt(datax, varnames=LETTERS[24:26],value.name="Val"
  14.   X Y Z Val 
  15. 1 1 1 1   1 
  16. 2 2 1 1   2 
  17. 3 1 2 1   3 
  18. 4 2 2 1   4 
  19. 5 1 1 2   5 
  20. 6 2 1 2   6 
  21. 7 1 2 2   7 
  22. 8 2 2 2   8 

如果是列表數據,melt 函數將列表中的數據拉成兩列,一列記錄列表元素的值,另一列記錄列表元素的名稱;如果列表中的元素是列表,則增加列變量存儲元素名稱。元素值排列在前,名稱在后,越是頂級的列表元素名稱越靠后:

  1. > datax <- list(agi="AT1G10000"GO=c("GO:1010","GO:2020"), KEGG=c("0100", "0200", "0300")) 
  2. > melt(datax) 
  3.       value   L1 
  4. 1 AT1G10000  agi 
  5. 2   GO:1010   GO 
  6. 3   GO:2020   GO 
  7. 4      0100 KEGG 
  8. 5      0200 KEGG 
  9. 6      0300 KEGG 
  10. > melt(list(at_0100=datax)) 
  11.       value   L2      L1 
  12. 1 AT1G10000  agi at_0100 
  13. 2   GO:1010   GO at_0100 
  14. 3   GO:2020   GO at_0100 
  15. 4      0100 KEGG at_0100 
  16. 5      0200 KEGG at_0100 
  17. 6      0300 KEGG at_0100 

如果數據是數據框類型,melt的參數就稍微復雜些:

  1. melt(data, id.vars, measure.vars, 
  2.     variable.name = "variable", ..., na.rm = FALSE
  3.     value.name = "value"

其中 id.vars 是被當做維度的列變量,每個變量在結果中占一列;measure.vars 是被當成觀測值的列變量,它們的列變量名稱和值分別組成 variable 和 value兩列,列變量名稱用variable.name 和 value.name來指定。我們用airquality數據來看看:

  1. > str(airquality) 
  2. 'data.frame':   153 obs. of  6 variables: 
  3.  $ Ozone  : int  41 36 12 18 NA 28 23 19 8 NA ... 
  4.  $ Solar.R: int  190 118 149 313 NA NA 299 99 19 194 ... 
  5.  $ Wind   : num  7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ... 
  6.  $ Temp   : int  67 72 74 62 56 66 65 59 61 69 ... 
  7.  $ Month  : int  5 5 5 5 5 5 5 5 5 5 ... 
  8.  $ Day    : int  1 2 3 4 5 6 7 8 9 10 ... 

如果打算按月份分析臭氧和太陽輻射、風速、溫度三者(列2:4)的關系,我們把它轉成長格式數據框:

  1. > aq <- melt(airquality, var.ids=c("Ozone", "Month", "Day"),  
  2. measure.vars=c(2:4), variable.name="V.type"value.name="value"
  3. > str(aq) 
  4. 'data.frame':   459 obs. of  5 variables: 
  5.  $ Ozone : int  41 36 12 18 NA 28 23 19 8 NA ... 
  6.  $ Month : int  5 5 5 5 5 5 5 5 5 5 ... 
  7.  $ Day   : int  1 2 3 4 5 6 7 8 9 10 ... 
  8.  $ V.type: Factor w/ 3 levels "Solar.R","Wind",..: 1 1 1 1 1 1 1 1 1 1 ... 
  9.  $ value : num  190 118 149 313 NA NA 299 99 19 194 ... 

var.ids 可以寫成id,measure.vars可以寫成measure。id(即var.ids)和 觀測值(即measure.vars)這兩個參數可以只指定其中一個,剩余的列被當成另外一個參數的值;如果兩個都省略,數值型的列被看成觀測值,其他的被當成id。如果想省略參數或者去掉部分數據,參數名最好用 id/measure,否則得到的結果很可能不是你要的:

  1. > str(melt(airquality, var.ids=c(1,5,6), measure.vars=c(2:4))) 
  2. 'data.frame':   459 obs. of  5 variables: 
  3.  $ Ozone   : int  41 36 12 18 NA 28 23 19 8 NA ... 
  4.  $ Month   : int  5 5 5 5 5 5 5 5 5 5 ... 
  5.  $ Day     : int  1 2 3 4 5 6 7 8 9 10 ... 
  6.  $ variable: Factor w/ 3 levels "Solar.R","Wind",..: 1 1 1 1 1 1 1 1 1 1 ... 
  7.  $ value   : num  190 118 149 313 NA NA 299 99 19 194 ... 
  8. > str(melt(airquality, var.ids=1measure.vars=c(2:4)))   #看這里,雖然id只引用了一列,但結果卻不是這樣 
  9. 'data.frame':   459 obs. of  5 variables: 
  10.  $ Ozone   : int  41 36 12 18 NA 28 23 19 8 NA ... 
  11.  $ Month   : int  5 5 5 5 5 5 5 5 5 5 ... 
  12.  $ Day     : int  1 2 3 4 5 6 7 8 9 10 ... 
  13.  $ variable: Factor w/ 3 levels "Solar.R","Wind",..: 1 1 1 1 1 1 1 1 1 1 ... 
  14.  $ value   : num  190 118 149 313 NA NA 299 99 19 194 ... 
  15. > str(melt(airquality, var.ids=1))  #這樣用更慘,結果不是我們要的吧? 
  16.  
  17. Using  as id variables 
  18. 'data.frame':   918 obs. of  2 variables: 
  19.  $ variable: Factor w/ 6 levels "Ozone","Solar.R",..: 1 1 1 1 1 1 1 1 1 1 ... 
  20.  $ value   : num  41 36 12 18 NA 28 23 19 8 NA ... 
  21. > str(melt(airquality, id=1))  #這樣才行 
  22. 'data.frame':   765 obs. of  3 variables: 
  23.  $ Ozone   : int  41 36 12 18 NA 28 23 19 8 NA ... 
  24.  $ variable: Factor w/ 5 levels "Solar.R","Wind",..: 1 1 1 1 1 1 1 1 1 1 ... 
  25.  $ value   : num  190 118 149 313 NA NA 299 99 19 194 ... 

數據整容有什么用?當然有。別忘了reshape2和ggplot2都是Hadley Wickham的作品,melt 以后的數據(稱為molten數據)用ggplot2做統計圖就很方便了,可以快速做出我們需要的圖形:

  1. library(ggplot2) 
  2.  
  3. aq$Month <- factor(aq$Month) 
  4. <- ggplot(data=aq, aes(x=Ozoney=valuecolor=Month)) + theme_bw() 
  5. p + geom_point(shape=20size=4) + geom_smooth(aes(group=1), fill="gray80") + facet_wrap(~V.type, scales="free_y"

R語言進階之四:數據整形(reshape) - xxx - xxx的博客

melt獲得的數據(molten data)可以用 acast 或 dcast 還原。acast獲得數組,dcast獲得數據框。和unstack函數一樣,cast函數使用公式參數。公式的左邊每個變量都會作為結果中的一列,而右邊的變量被當成因子類型,每個水平都會在結果中產生一列。

  1. > head(dcast(aq, Ozone+Month+Day~V.type)) 
  2.   Ozone Month Day Solar.R Wind Temp 
  3. 1     1     5  21       8  9.7   59 
  4. 2     4     5  23      25  9.7   61 
  5. 3     6     5  18      78 18.4   57 
  6. 4     7     5  11      NA  6.9   74 
  7. 5     7     7  15      48 14.3   80 
  8. 6     7     9  24      49 10.3   69 

cast函數的作用不只是還原數據,還可以使用函數對數據進行匯總(aggregate)。事實上,melt函數是為cast服務的,目的是使用cast函數對數據進行aggregate:

  1. > dcast(aq, Month~V.type, fun.aggregate=meanna.rm=TRUE
  2.   Month  Solar.R      Wind     Temp 
  3. 1     5 181.2963 11.622581 65.54839 
  4. 2     6 190.1667 10.266667 79.10000 
  5. 3     7 216.4839  8.941935 83.90323 
  6. 4     8 171.8571  8.793548 83.96774 
  7. 5     9 167.4333 10.180000 76.90000 

五、plyr 包

plyr 的功能已經遠遠超出數據整容的范圍,Hadley在plyr中應用了split-apply-combine的數據處理哲學,即:先將數據分離,然后應用某些處理函數,最后將結果重新組合成所需的形式返回。某些人士喜歡用“揉”來表述這樣的數據處理;“揉”,把數據當面團搗來搗去,很哲,磚家們的磚頭落下來,拍死人絕不償命[[74033]]。

先別哲了,來點實際的:plyr的函數命名方式比較規律,很容易記憶和使用。比如 a開頭的函數aaply, adply 和 alply 將數組(array)分別轉成數組、數據框和列表;daply, ddply 和 dlply 將數據框分別轉成數組、數據框和列表;而laply, ldaply, llply將列表(list)分別轉成數組、數據框和列表。

下面我們看看如何使用ldply函數將ath1121501.db包中的KEGG列表數據轉成數據框:

  1. > library(ath1121501.db) 
  2. > keggs <- as.list(ath1121501PATH[mappedkeys(ath1121501PATH)]) 
  3. > head(ldply(keggs, paste, collapse='; ')) 
  4.         .id                                              V1 
  5. 1 261579_at                                           00190 
  6. 2 261569_at                                           04712 
  7. 3 261583_at 00010; 00020; 00290; 00620; 00650; 01100; 01110 
  8. 4 261574_at                      00903; 00945; 01100; 01110 
  9. 5 261043_at                             00051; 00520; 01100 
  10. 6 261044_at                                           04122 

plyr包的函數較多,不再一一介紹,更多用法請參考它的在線幫助,Hadley 也寫了很詳細的tutorial:http://plyr.had.co.nz/09-user/

原文鏈接:http://helloxxxxxx.blog.163.com/blog/static/21601509520133343821837/?latestBlog

【編輯推薦】

1.R語言學習筆記(1):R是什么

1.R語言學習筆記(2):數據類型和數據結構

 

責任編輯:彭凡 來源: 網易博客
相關推薦

2013-05-16 09:37:14

R語言

2021-08-04 08:56:34

語言Go排序

2013-05-27 13:50:07

大數據

2013-06-03 09:45:53

R語言

2013-05-15 13:32:16

R語言

2014-08-01 13:40:50

R語言

2014-07-31 09:13:54

R語言MongoDB

2022-07-15 16:04:22

R 語言

2015-07-29 11:14:20

r語言數據科學

2017-10-17 11:58:54

R語言UpSetR可視化

2015-08-18 13:33:16

r語言

2018-08-03 11:58:07

美團分布式數據處理可視化

2018-04-20 09:06:11

R語言數據存儲

2013-05-22 08:55:14

R語言

2017-07-05 14:42:13

2022-03-09 09:00:41

SwiftUI視圖生成器Swift

2009-06-30 16:46:45

Criteria進階查

2022-03-01 09:01:56

SwiftUI動畫進階Canvas

2017-01-10 09:15:11

2017-08-08 09:15:41

前端JavaScript頁面渲染
點贊
收藏

51CTO技術棧公眾號

国产精品网在线观看| 成年视频在线观看| 日本aⅴ精品一区二区三区| 少妇高潮久久77777| 国产精品中文久久久久久| 日本黄色免费在线| 中文字幕在线不卡国产视频| 国产精品日韩欧美一区二区| 波多野结衣一本一道| 亚洲欧美亚洲| 亚洲视频日韩精品| www.com日本| 国产原创一区| 天天爽夜夜爽夜夜爽精品视频| 神马影院午夜我不卡影院| 亚洲精品久久久久久动漫器材一区| 国产精品丝袜xxxxxxx| 日韩亚洲精品视频| 法国伦理少妇愉情| 天堂久久av| 欧美日韩美女一区二区| 国产淫片免费看| 老司机精品影院| 国产婷婷色一区二区三区| 国产三区精品| 精品人妻无码一区二区色欲产成人 | 国产精品自拍av| 国产盗摄xxxx视频xxx69| 久久国产在线视频| 91精品综合久久久久久久久久久| 日韩精品在线免费| 日本精品一二三区| 国产一区二区| 欧美精品九九99久久| 狠狠热免费视频| 亚洲校园激情春色| 精品久久久一区二区| 日本一本中文字幕| 青春草免费在线视频| 1000部国产精品成人观看| 午夜精品福利一区二区| 国产三级在线看| 久久影音资源网| 免费99视频| 亚洲欧洲综合在线| av中文字幕一区| 国精产品一区二区| 全国男人的天堂网| 99这里只有久久精品视频| 成人羞羞视频免费| av无码精品一区二区三区宅噜噜| 久久99精品久久久久久| 国产日韩换脸av一区在线观看| 蜜臀精品一区二区三区| 久久黄色网页| 国产精品99导航| 五月激情丁香网| 美女mm1313爽爽久久久蜜臀| 国产美女精品视频免费观看| 亚洲天堂aaa| 久久成人18免费观看| 国产精品一区二区性色av| 人妻中文字幕一区二区三区| 免费人成精品欧美精品| 国产又爽又黄的激情精品视频 | 六十路精品视频| 欧美日本网站| 国产精品欧美一级免费| 中文字幕一区二区三区精彩视频 | 亚洲欧洲日韩在线| 国产大尺度在线观看| 18视频在线观看| 香蕉av福利精品导航| 日本日本19xxxⅹhd乱影响| 天堂а√在线最新版中文在线| 欧美性猛交xxxx免费看久久久| 精品www久久久久奶水| 日韩三区在线| 欧美日韩久久不卡| 一起草最新网址| 另类尿喷潮videofree| 在线播放精品一区二区三区| 国产美女高潮视频| 在线不卡亚洲| 国产精品久久97| 国产哺乳奶水91在线播放| av亚洲精华国产精华精华| 青青草原亚洲| av网站在线看| 欧美性猛xxx| 老司机午夜性大片| 久久久久观看| 中文字幕亚洲色图| 日本特黄特色aaa大片免费| 日本aⅴ精品一区二区三区| caoporen国产精品| 久久天堂电影| 最新高清无码专区| 欧美一区二区三区爽大粗免费| www.26天天久久天堂| 精品国产一二三区| 91社区视频在线观看| 亚洲无线视频| 成人黄色午夜影院| 欧美伦理影视网| 亚洲女性喷水在线观看一区| av网站在线观看不卡| 国产精品日本一区二区三区在线| 日韩电影中文 亚洲精品乱码| 你懂得在线观看| 国产精品日韩久久久| 4444kk亚洲人成电影在线| 黄色av网址在线免费观看| 亚洲精品videosex极品| 美女黄色片视频| 欧美三级电影在线| 九色精品免费永久在线| 中文字幕福利视频| 久久这里只有精品视频网| av无码久久久久久不卡网站| 日韩免费在线电影| 亚洲色图日韩av| 日本天堂网在线观看| 国产成人免费高清| 亚洲日本精品国产第一区| 大胆人体一区| 亚洲精品福利在线| 久久精品无码人妻| 国产精品夜夜嗨| 青少年xxxxx性开放hg| 欧美性片在线观看| 亚洲另类xxxx| 免费观看成人毛片| 99久久伊人精品| 欧美高清中文字幕| 日韩最新av| 欧美成人全部免费| 国产色片在线观看| 亚洲人成伊人成综合网小说| 成人免费毛片播放| 伊人久久大香线蕉无限次| 91国内免费在线视频| 国产综合在线播放| 亚洲五码中文字幕| 久久久男人的天堂| 亚洲视频久久| 国产伦精品一区二区三区照片91| 秋霞在线视频| 精品国产一二三| 精品无码久久久久久久| 国产99久久久精品| 人妻无码久久一区二区三区免费| 伊人久久亚洲| 国模精品视频一区二区三区| 日批视频在线播放| 欧美视频精品一区| 精品无人区无码乱码毛片国产 | 17c国产在线| 亚洲精品a级片| 91九色露脸| 动漫一区二区| 精品视频久久久久久| 综合网在线观看| 中文av字幕一区| 91小视频网站| 欧美日韩一区自拍| 狠狠色综合一区二区| 少妇视频在线观看| 中文字幕精品av| 国产丝袜在线视频| 亚洲福利视频一区二区| 精品黑人一区二区三区观看时间| 三级影片在线观看欧美日韩一区二区| 日韩欧美国产二区| 欧美经典影片视频网站| 久久久天堂国产精品女人| 色视频免费在线观看| 欧美丝袜丝交足nylons图片| 裸体武打性艳史| 不卡一区二区在线| 欧美一级裸体视频| 欧美日韩国产精品一区二区亚洲| 激情视频在线观看一区二区三区| 欧美中文字幕精在线不卡| 久久精品亚洲一区| 天天操天天干天天插| 欧美性做爰猛烈叫床潮| 久久久一区二区三区四区| 久久奇米777| 美女被艹视频网站| 男人的天堂成人在线| 宅男在线精品国产免费观看| 成人av婷婷| 国产精品爽爽爽| 成年人视频免费在线播放| 这里只有精品视频| 国精品人妻无码一区二区三区喝尿| 日本高清不卡一区| 欧美成人手机视频| 国产女同互慰高潮91漫画| 色哟哟免费视频| 久久免费国产| 欧美一级欧美一级| 国产精品久久久久无码av| 精品产品国产在线不卡| 欧美成人精品午夜一区二区| 国产精品av电影| 变态调教一区二区三区| 日韩一区二区福利| 男同在线观看| 精品美女一区二区三区| 夜夜躁狠狠躁日日躁av| 日韩欧美高清视频| 国产午夜免费视频| 最近中文字幕一区二区三区| 手机毛片在线观看| 99国产精品国产精品久久| www.偷拍.com| 久久福利资源站| 亚洲精品视频导航| 另类亚洲自拍| 国模无码视频一区二区三区| 午夜性色一区二区三区免费视频| 少妇精品久久久久久久久久| 亚洲大片精品免费| 好吊色欧美一区二区三区四区| 色妞ww精品视频7777| 国产美女久久久| 成人自拍视频网| 国产成人午夜视频网址| 91精品论坛| 69视频在线播放| 69av成人| 国产做受高潮69| av2020不卡| 久久免费视频在线观看| 在线xxxx| 欧美老女人性生活| a级网站在线播放| 久久中文字幕在线视频| av在线app| 久久深夜福利免费观看| 国产原创精品视频| 美女av一区二区| 亚洲七七久久综合桃花剧情介绍| 麻豆乱码国产一区二区三区| 老司机精品影院| 欧美丰满少妇xxxx| 色在线视频网| 97精品一区二区视频在线观看| 黄色小说在线播放| 97精品伊人久久久大香线蕉| 欧美三级网站| 国产精品久久久久久av下载红粉 | 国产精品久久麻豆| 欧美老少配视频| 国产美女一区视频| 555www成人网| 九色成人搞黄网站| 成人免费视频在线观看超级碰| 亚洲欧美在线人成swag| 亚洲综合在线小说| 久久精品国产亚洲5555| 免费亚洲一区二区| 大胆日韩av| 天天综合五月天| 亚洲啪啪91| 国产激情在线观看视频| 久久精品国产精品亚洲红杏 | 男操女视频网站| 欧美精品久久99久久在免费线 | 日韩中文在线视频| 最近中文字幕免费mv2018在线| 欧美国产在线视频| 美女100%一区| 成人在线中文字幕| 高清精品视频| 香蕉久久夜色| 国内精品久久久久久久影视麻豆 | 日韩精品成人免费观看视频| 欧美调教femdomvk| 精品人妻久久久久一区二区三区 | 免播放器亚洲| 中文字幕在线综合| 成人禁用看黄a在线| 天天干天天舔天天操| 一区二区三区在线观看欧美 | 欧美高清视频一二三区| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的 | 在线综合+亚洲+欧美中文字幕| 亚洲黄色片视频| 亚洲性线免费观看视频成熟| 污污影院在线观看| 日本在线观看天堂男亚洲 | 久久精品国产99精品国产亚洲性色| av一区二区在线播放| 亚洲中文字幕无码一区二区三区| 性欧美videos另类喷潮| 亚洲综合20p| 久久久久久电影| 国产精彩视频在线观看| 欧美日韩视频在线观看一区二区三区 | 欧美偷拍第一页| 一本大道久久a久久综合婷婷| www.超碰在线.com| 中文字幕国产亚洲2019| 国产直播在线| 国产综合色香蕉精品| 亚洲三级网页| 丁香六月激情婷婷| 黑人精品欧美一区二区蜜桃| 久久精品—区二区三区舞蹈| 亚洲一区二区在线免费观看视频| 羞羞色院91蜜桃| 日韩精品在线免费| 超免费在线视频| 91精品国产一区二区三区动漫| 不卡中文字幕| 欧美黄网站在线观看| 成人久久视频在线观看| h色网站在线观看| 欧美日韩午夜在线视频| 二人午夜免费观看在线视频| 2021久久精品国产99国产精品| 99这里只有精品视频| 青青草视频国产| 国产精品自在在线| 裸体武打性艳史| 欧美一二区视频| 国产乱色在线观看| 国产精品视频自拍| 极品美女一区二区三区| 国产免费观看高清视频| 成人av中文字幕| 国产成人无码精品亚洲| 亚洲二区在线播放视频| 成人免费一区二区三区牛牛| 国产经典一区二区三区| 好看的av在线不卡观看| 亚洲欧美高清在线| 亚洲一二三四在线观看| 日韩在线视频免费| 韩国精品久久久999| 久久悠悠精品综合网| 你懂的av在线| 99精品国产一区二区三区不卡| 日韩av电影网| 日韩国产高清视频在线| 综合毛片免费视频| 欧美在线3区| 青椒成人免费视频| 免费91在线观看| 91麻豆精品国产自产在线 | 天天综合精品| 天天色天天干天天色| 一区二区三区91| 欧美在线 | 亚洲| 欧美尤物巨大精品爽| 国产精品片aa在线观看| 天天插天天操天天射| 中文字幕一区二区三区在线播放| 97精品人妻一区二区三区| 蜜臀久久99精品久久久久久宅男| 视频一区日韩精品| 欧美亚洲国产成人| 国产精品麻豆欧美日韩ww| 国产喷水吹潮视频www| 久久久久久久国产精品| 欧美交a欧美精品喷水| 成年人在线观看视频免费| 综合精品久久久| 人妻91麻豆一区二区三区| 欧洲日韩成人av| 91影院成人| 中国一级特黄录像播放 | 亚洲av无码一区二区三区dv| 91精品国产91久久久| 成人激情免费视频| 亚洲天堂一区二区在线观看| 精品久久久在线观看| 成人免费高清在线播放| 99精品在线直播| 美女精品网站| www色aa色aawww| 亚洲精品99久久久久| 欧美黄页在线免费观看| 久久男人资源站| 欧美国产激情二区三区| 亚洲精品福利网站| 国产精品一区电影| 99亚洲一区二区| www色aa色aawww| 亚洲欧美成人网| 亚洲**毛片| 香蕉视频禁止18| 精品久久在线播放| 国产黄a三级三级三级av在线看| 农村寡妇一区二区三区| 国产精品91一区二区| 欧美一区二区三区久久久|