Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 取消列出数据框中的列表_R_List_Dataframe - Fatal编程技术网

R 取消列出数据框中的列表

R 取消列出数据框中的列表,r,list,dataframe,R,List,Dataframe,我对R(和这个网站)很陌生,我遇到了一个简单的问题,但我还没有找到解决办法。 我在一个数据集上工作,该数据集包含由一个CTD在几个日期测量的水柱内的潜在密度值。我想在一个数据框架内按日期对这些度量进行分组 我一开始所拥有的: ctd<-read.csv("data/ptb_ctd.csv", sep=";", stringsAsFactors = FALSE) julian <- as.numeric(as.Date(ctd$date, format= "%d/%m/%Y")) +

我对R(和这个网站)很陌生,我遇到了一个简单的问题,但我还没有找到解决办法。 我在一个数据集上工作,该数据集包含由一个CTD在几个日期测量的水柱内的潜在密度值。我想在一个数据框架内按日期对这些度量进行分组

我一开始所拥有的:

ctd<-read.csv("data/ptb_ctd.csv", sep=";", stringsAsFactors = FALSE)
julian <- as.numeric(as.Date(ctd$date, format= "%d/%m/%Y")) + 17280
ctd$julian <- julian
现在,我想获取“pot_density”值(每个日期都有几个值,即数据框中相同的“date”和“julian”)并将它们存储在新的数据框中,这样julian天就变成了行,列由该天/行的每个“pot_density”度量值组成

dens<-data.frame()
dens<-aggregate(pot_density ~ julian, data=ctd, FUN=paste)
现在我想将“pot_density”值取消列出到每行的n列中,这就是我遇到的问题。我需要它能够应用一个函数来检测每个采样日期的跃层,并绘制跃层的年际变化

我尝试了几种功能:

dens <- str_split_fixed(dens, pattern=",", n=Inf)

dens<-split(dens$pot_density, julian)

dens<-spread(dens, key="julian", value="pot_density", convert=FALSE, fill=NA)

dens<-lapply(dens$pot_dens, FUN=spread)

dens<-reshape(dens,varying=NULL, v.names = pot_density,timevar=julian)
无法执行
dput(dens[1:100,])
,因为控制台将无法包含所有内容


提前多谢

以下是一种尝试,旨在通过对代码进行最少的更改来解决您的问题:

ctd <- data.frame(pot_density = c(28.7, 27, 26, 25, 24), julian = c(rep(32790, 2), rep(27548, 3)))
dens <- aggregate(pot_density ~ julian, data = ctd, FUN = paste, collapse = "/")
tidyr::separate(dens, pot_density, sep = "/", into = paste0("pot_density.", 1:3))

ctd使用
dplyr

单列到多列的拆分可以通过按每个日期/朱利安进行第一次分组来执行, 按逗号拆分、取消列出并转换为data.frame行

DF=data.frame(julian=27548,pot_density=paste(c(28.4698015312665,28.4704581365093,28.4706453687),collapse=","),stringsAsFactors=FALSE)

DF

#  julian                                     pot_density
#1  27548 28.4698015312665,28.4704581365093,28.4706453687


newDF=DF %>% 
      dplyr::group_by(julian) %>% 
      dplyr::do(.,data.frame(matrix(unlist(strsplit(.$pot_density,",")),nrow=1)) ) %>% 
      as.data.frame()

newDF
#  julian               X1               X2            X3
#1  27548 28.4698015312665 28.4704581365093 28.4706453687
更新的数据集:

对于更新的数据集,可以在
dplyr::do
函数中使用unlist来实现所需的矩形data.frame结构

请注意,由于10个向量的长度不同,因此在某些列中会有NA值以及 列的最大长度为10个向量,在此情况下为85

sapply(dens$pot_density,length)
# 001 002 003 004 005 006 007 008 009 010 
 # 82  83  83  84  84  84  83  84  81  85

newDens=dens %>% 
          dplyr::group_by(julian) %>% 
          dplyr::do(.,data.frame(matrix(unlist(.$pot_density),nrow=1)) ) %>% 
          as.data.frame()

head(newDens)

  # julian       X1       X2       X3       X4       X5       X6       X7       X8       X9      X10      X11      X12      X13      X14
# 1  27548 28.46980 28.47046 28.47065 28.47137 28.47160 28.47132 28.47194 28.47164 28.47194 28.47244 28.47294 28.47309 28.47288 28.47310
# 2  27555 28.38543 28.38806 28.39109 28.40103 28.41289 28.42243 28.43977 28.44522 28.44582 28.44576 28.44620 28.44655 28.44736 28.44999
# 3  27562 28.42227 28.42382 28.42443 28.42479 28.42547 28.42512 28.42507 28.42421 28.42399 28.42443 28.42443 28.42527 28.42468 28.42435
# 4  27569 28.36748 28.36746 28.36878 28.37012 28.37175 28.37264 28.37423 28.37468 28.37515 28.37497 28.37476 28.37457 28.37728 28.37809
# 5  27576 28.45268 28.45358 28.45255 28.45186 28.45280 28.45318 28.45289 28.45554 28.45886 28.46282 28.47461 28.47840 28.48306 28.48473
# 6  27583 28.38106 28.38130 28.38171 28.38312 28.38544 28.38715 28.38908 28.39021 28.39180 28.39539 28.39802 28.40041 28.40451 28.40721
       # X15      X16      X17      X18      X19      X20      X21      X22      X23      X24      X25      X26      X27      X28      X29
# 1 28.47376 28.47400 28.47423 28.47386 28.47432 28.47427 28.47501 28.47566 28.47508 28.47558 28.47528 28.47529 28.47534 28.47544 28.47639
# 2 28.45058 28.45241 28.45280 28.45279 28.45242 28.45243 28.45257 28.45329 28.45320 28.45371 28.45462 28.45493 28.45548 28.45603 28.45587
# 3 28.42487 28.42552 28.42493 28.42470 28.42469 28.42460 28.42477 28.42491 28.42480 28.42508 28.42372 28.42351 28.42387 28.42422 28.42406
# 4 28.37909 28.38681 28.39588 28.39948 28.39925 28.40067 28.40377 28.40711 28.40835 28.40862 28.40971 28.40957 28.40982 28.41094 28.41169
# 5 28.48765 28.48769 28.48837 28.48860 28.48843 28.48838 28.48861 28.48836 28.48877 28.48880 28.48866 28.48823 28.48845 28.48855 28.48994
# 6 28.40871 28.41264 28.41362 28.41674 28.42094 28.42703 28.43125 28.43744 28.44327 28.44861 28.45126 28.45242 28.45129 28.45123 28.45237
       # X30      X31      X32      X33      X34      X35      X36      X37      X38      X39      X40      X41      X42      X43      X44
# 1 28.47697 28.47747 28.47791 28.47790 28.47803 28.47818 28.47809 28.47788 28.47792 28.47816 28.47811 28.47780 28.47793 28.47787 28.47827
# 2 28.45652 28.45807 28.45933 28.45977 28.46019 28.46051 28.46100 28.46136 28.46127 28.46158 28.46191 28.46233 28.46503 28.46818 28.46907
# 3 28.42378 28.42353 28.42367 28.42346 28.42334 28.42329 28.42322 28.42341 28.42340 28.42404 28.42429 28.42447 28.42436 28.42467 28.42444
# 4 28.41317 28.41636 28.42153 28.42233 28.42240 28.42396 28.42525 28.42537 28.42547 28.42604 28.42650 28.42772 28.42909 28.43003 28.43136
# 5 28.48980 28.49084 28.49092 28.49133 28.49152 28.49214 28.49238 28.49239 28.49209 28.49234 28.49233 28.49241 28.49260 28.49329 28.49381
# 6 28.45339 28.45486 28.45551 28.45618 28.45713 28.45885 28.46112 28.46298 28.46378 28.46390 28.46541 28.46610 28.46873 28.47033 28.47103
       # X45      X46      X47      X48      X49      X50      X51      X52      X53      X54      X55      X56      X57      X58      X59
# 1 28.47823 28.47792 28.47776 28.47791 28.47761 28.47762 28.47767 28.47726 28.47711 28.47687 28.47735 28.47686 28.47717 28.47754 28.47722
# 2 28.46970 28.46996 28.47060 28.47118 28.47135 28.47296 28.47468 28.47556 28.47722 28.47915 28.47984 28.48097 28.48108 28.48111 28.48129
# 3 28.42407 28.42406 28.42438 28.42469 28.42493 28.42558 28.42621 28.42715 28.42722 28.42752 28.42765 28.42871 28.43017 28.43179 28.43443
# 4 28.43191 28.43311 28.43480 28.43596 28.43673 28.43921 28.44073 28.44223 28.44265 28.44352 28.44448 28.44501 28.44557 28.44542 28.44716
# 5 28.49392 28.49363 28.49379 28.49324 28.49351 28.49468 28.49558 28.49573 28.49635 28.49718 28.49854 28.49863 28.49868 28.50034 28.50022
# 6 28.47487 28.47718 28.48008 28.48167 28.48309 28.48441 28.48660 28.48846 28.49091 28.49313 28.49472 28.49529 28.49647 28.49742 28.49801
       # X60      X61      X62      X63      X64      X65      X66      X67      X68      X69      X70      X71      X72      X73      X74
# 1 28.47667 28.47667 28.47652 28.47673 28.47643 28.47634 28.47668 28.47667 28.47647 28.47646 28.47658 28.47668 28.47670 28.47662 28.47669
# 2 28.48107 28.48153 28.48151 28.48126 28.48123 28.48145 28.48140 28.48129 28.48126 28.48143 28.48146 28.48141 28.48154 28.48136 28.48149
# 3 28.43473 28.43517 28.43597 28.43618 28.43668 28.43699 28.43688 28.43797 28.43824 28.43870 28.43863 28.43913 28.44231 28.44498 28.44527
# 4 28.44915 28.45137 28.45238 28.45239 28.45248 28.45288 28.45327 28.45397 28.45462 28.45597 28.45791 28.45879 28.46073 28.46372 28.46587
# 5 28.50005 28.49965 28.50040 28.50208 28.50291 28.50319 28.50352 28.50502 28.50531 28.50528 28.50728 28.50742 28.51176 28.51329 28.51406
# 6 28.49889 28.49929 28.50054 28.50253 28.50502 28.50801 28.51164 28.51209 28.51328 28.51400 28.51412 28.51475 28.51701 28.51829 28.51830
       # X75      X76      X77      X78      X79      X80      X81      X82      X83      X84 X85
# 1 28.47676 28.47684 28.47698 28.47675 28.47646 28.47656 28.47680 28.47696       NA       NA  NA
# 2 28.48138 28.48152 28.48168 28.48117 28.48099 28.48080 28.48079 28.48080 28.48076       NA  NA
# 3 28.44555 28.44556 28.44747 28.44876 28.44821 28.44815 28.45076 28.45319 28.45599       NA  NA
# 4 28.46681 28.46803 28.46890 28.46963 28.47142 28.47305 28.47342 28.47462 28.47682 28.47908  NA
# 5 28.51426 28.51492 28.51440 28.51432 28.51416 28.51403 28.51449 28.51467 28.51461 28.51462  NA
# 6 28.51946 28.52087 28.52085 28.52243 28.52380 28.52534 28.52637 28.52713 28.52725 28.52821  NA

这可能会有帮助:我想这是因为乐趣=聚合粘贴。如果你在这里放了另一个函数,你想应用到这些罐子密度每朱利安,然后我猜你解决了它。尝试使用“乐趣=列表”代替,和一些其他函数,但没有成功。尽管阅读了aggregate的帮助部分,但我不确定自己是否理解这里“FUN=…”的目的。“FUN=NULL”不起作用。将尝试发布一个子集副本。只需使用上面的代码并将其作为代码粘贴到您的帖子中。问题是,数据帧本身并不适合于先验未知数量的列。我想你需要一些类似于
ctd%>%groupby(朱利安)%>%do()的东西。这是dplyr语法,它为
do()
中的内容提供ctd数据帧的一个子集(可以是一系列以
{
}
开头和结尾的代码行),您可以使用
$pot\u density
访问
pot\u density
。这给出了一个数字向量,你可以用它来做你真正的魔术,得到julian pot_density.1 pot_density.2 pot_density.3 1 27548 26 25 24 2 32790 28.7 27警告信息:1个位置的值太少:2我同意我应该使用
粘贴功能,但我首先不明白该函数的总体用途是什么?如果每个
julian
组有不同的
plot\u density
值(根据您的编辑,情况似乎是这样的),这是可以的。您必须调整
1:3
以匹配
plot\u density
值的最大计数如果您有SQL背景,也许您可以将
FUN
参数与
GROUP BY
查询中的摘要函数相关联。使用
聚合(pot\u density~julian,data=ctd,FUN=max)
FUN=mean
对SQL中的instanceNo后台进行实验。我试图调整你的代码,但无法让它以我希望yetSeems为那一行工作的方式工作,我将尝试调整它以适应整个数据帧,非常感谢!因此,更新数据集的代码工作得非常好!多谢各位,;这正是我想要的。顺便说一句,NAs在这里并不重要(我预料到了,采样并不总是在同一个站点进行的,因此深度不同),而且我使用完整的“ctd”数据集获得了多达538列的数据。再次感谢!很高兴它成功了,请查看
dplyr
文档,了解其出色的数据处理能力,以及这一点
ctd <- data.frame(pot_density = c(28.7, 27, 26, 25, 24), julian = c(rep(32790, 2), rep(27548, 3)))
dens <- aggregate(pot_density ~ julian, data = ctd, FUN = paste, collapse = "/")
tidyr::separate(dens, pot_density, sep = "/", into = paste0("pot_density.", 1:3))
DF=data.frame(julian=27548,pot_density=paste(c(28.4698015312665,28.4704581365093,28.4706453687),collapse=","),stringsAsFactors=FALSE)

DF

#  julian                                     pot_density
#1  27548 28.4698015312665,28.4704581365093,28.4706453687


newDF=DF %>% 
      dplyr::group_by(julian) %>% 
      dplyr::do(.,data.frame(matrix(unlist(strsplit(.$pot_density,",")),nrow=1)) ) %>% 
      as.data.frame()

newDF
#  julian               X1               X2            X3
#1  27548 28.4698015312665 28.4704581365093 28.4706453687
sapply(dens$pot_density,length)
# 001 002 003 004 005 006 007 008 009 010 
 # 82  83  83  84  84  84  83  84  81  85

newDens=dens %>% 
          dplyr::group_by(julian) %>% 
          dplyr::do(.,data.frame(matrix(unlist(.$pot_density),nrow=1)) ) %>% 
          as.data.frame()

head(newDens)

  # julian       X1       X2       X3       X4       X5       X6       X7       X8       X9      X10      X11      X12      X13      X14
# 1  27548 28.46980 28.47046 28.47065 28.47137 28.47160 28.47132 28.47194 28.47164 28.47194 28.47244 28.47294 28.47309 28.47288 28.47310
# 2  27555 28.38543 28.38806 28.39109 28.40103 28.41289 28.42243 28.43977 28.44522 28.44582 28.44576 28.44620 28.44655 28.44736 28.44999
# 3  27562 28.42227 28.42382 28.42443 28.42479 28.42547 28.42512 28.42507 28.42421 28.42399 28.42443 28.42443 28.42527 28.42468 28.42435
# 4  27569 28.36748 28.36746 28.36878 28.37012 28.37175 28.37264 28.37423 28.37468 28.37515 28.37497 28.37476 28.37457 28.37728 28.37809
# 5  27576 28.45268 28.45358 28.45255 28.45186 28.45280 28.45318 28.45289 28.45554 28.45886 28.46282 28.47461 28.47840 28.48306 28.48473
# 6  27583 28.38106 28.38130 28.38171 28.38312 28.38544 28.38715 28.38908 28.39021 28.39180 28.39539 28.39802 28.40041 28.40451 28.40721
       # X15      X16      X17      X18      X19      X20      X21      X22      X23      X24      X25      X26      X27      X28      X29
# 1 28.47376 28.47400 28.47423 28.47386 28.47432 28.47427 28.47501 28.47566 28.47508 28.47558 28.47528 28.47529 28.47534 28.47544 28.47639
# 2 28.45058 28.45241 28.45280 28.45279 28.45242 28.45243 28.45257 28.45329 28.45320 28.45371 28.45462 28.45493 28.45548 28.45603 28.45587
# 3 28.42487 28.42552 28.42493 28.42470 28.42469 28.42460 28.42477 28.42491 28.42480 28.42508 28.42372 28.42351 28.42387 28.42422 28.42406
# 4 28.37909 28.38681 28.39588 28.39948 28.39925 28.40067 28.40377 28.40711 28.40835 28.40862 28.40971 28.40957 28.40982 28.41094 28.41169
# 5 28.48765 28.48769 28.48837 28.48860 28.48843 28.48838 28.48861 28.48836 28.48877 28.48880 28.48866 28.48823 28.48845 28.48855 28.48994
# 6 28.40871 28.41264 28.41362 28.41674 28.42094 28.42703 28.43125 28.43744 28.44327 28.44861 28.45126 28.45242 28.45129 28.45123 28.45237
       # X30      X31      X32      X33      X34      X35      X36      X37      X38      X39      X40      X41      X42      X43      X44
# 1 28.47697 28.47747 28.47791 28.47790 28.47803 28.47818 28.47809 28.47788 28.47792 28.47816 28.47811 28.47780 28.47793 28.47787 28.47827
# 2 28.45652 28.45807 28.45933 28.45977 28.46019 28.46051 28.46100 28.46136 28.46127 28.46158 28.46191 28.46233 28.46503 28.46818 28.46907
# 3 28.42378 28.42353 28.42367 28.42346 28.42334 28.42329 28.42322 28.42341 28.42340 28.42404 28.42429 28.42447 28.42436 28.42467 28.42444
# 4 28.41317 28.41636 28.42153 28.42233 28.42240 28.42396 28.42525 28.42537 28.42547 28.42604 28.42650 28.42772 28.42909 28.43003 28.43136
# 5 28.48980 28.49084 28.49092 28.49133 28.49152 28.49214 28.49238 28.49239 28.49209 28.49234 28.49233 28.49241 28.49260 28.49329 28.49381
# 6 28.45339 28.45486 28.45551 28.45618 28.45713 28.45885 28.46112 28.46298 28.46378 28.46390 28.46541 28.46610 28.46873 28.47033 28.47103
       # X45      X46      X47      X48      X49      X50      X51      X52      X53      X54      X55      X56      X57      X58      X59
# 1 28.47823 28.47792 28.47776 28.47791 28.47761 28.47762 28.47767 28.47726 28.47711 28.47687 28.47735 28.47686 28.47717 28.47754 28.47722
# 2 28.46970 28.46996 28.47060 28.47118 28.47135 28.47296 28.47468 28.47556 28.47722 28.47915 28.47984 28.48097 28.48108 28.48111 28.48129
# 3 28.42407 28.42406 28.42438 28.42469 28.42493 28.42558 28.42621 28.42715 28.42722 28.42752 28.42765 28.42871 28.43017 28.43179 28.43443
# 4 28.43191 28.43311 28.43480 28.43596 28.43673 28.43921 28.44073 28.44223 28.44265 28.44352 28.44448 28.44501 28.44557 28.44542 28.44716
# 5 28.49392 28.49363 28.49379 28.49324 28.49351 28.49468 28.49558 28.49573 28.49635 28.49718 28.49854 28.49863 28.49868 28.50034 28.50022
# 6 28.47487 28.47718 28.48008 28.48167 28.48309 28.48441 28.48660 28.48846 28.49091 28.49313 28.49472 28.49529 28.49647 28.49742 28.49801
       # X60      X61      X62      X63      X64      X65      X66      X67      X68      X69      X70      X71      X72      X73      X74
# 1 28.47667 28.47667 28.47652 28.47673 28.47643 28.47634 28.47668 28.47667 28.47647 28.47646 28.47658 28.47668 28.47670 28.47662 28.47669
# 2 28.48107 28.48153 28.48151 28.48126 28.48123 28.48145 28.48140 28.48129 28.48126 28.48143 28.48146 28.48141 28.48154 28.48136 28.48149
# 3 28.43473 28.43517 28.43597 28.43618 28.43668 28.43699 28.43688 28.43797 28.43824 28.43870 28.43863 28.43913 28.44231 28.44498 28.44527
# 4 28.44915 28.45137 28.45238 28.45239 28.45248 28.45288 28.45327 28.45397 28.45462 28.45597 28.45791 28.45879 28.46073 28.46372 28.46587
# 5 28.50005 28.49965 28.50040 28.50208 28.50291 28.50319 28.50352 28.50502 28.50531 28.50528 28.50728 28.50742 28.51176 28.51329 28.51406
# 6 28.49889 28.49929 28.50054 28.50253 28.50502 28.50801 28.51164 28.51209 28.51328 28.51400 28.51412 28.51475 28.51701 28.51829 28.51830
       # X75      X76      X77      X78      X79      X80      X81      X82      X83      X84 X85
# 1 28.47676 28.47684 28.47698 28.47675 28.47646 28.47656 28.47680 28.47696       NA       NA  NA
# 2 28.48138 28.48152 28.48168 28.48117 28.48099 28.48080 28.48079 28.48080 28.48076       NA  NA
# 3 28.44555 28.44556 28.44747 28.44876 28.44821 28.44815 28.45076 28.45319 28.45599       NA  NA
# 4 28.46681 28.46803 28.46890 28.46963 28.47142 28.47305 28.47342 28.47462 28.47682 28.47908  NA
# 5 28.51426 28.51492 28.51440 28.51432 28.51416 28.51403 28.51449 28.51467 28.51461 28.51462  NA
# 6 28.51946 28.52087 28.52085 28.52243 28.52380 28.52534 28.52637 28.52713 28.52725 28.52821  NA