r - 计算观测值并将它们添加到 R 中的数据框中
问题描述
从 1987 年到 2019 年,我有 108 只共同基金的回报。我想计算基金存在的总观察次数(不包括 NA)。
我已经能够使用以下代码获得峰度、偏度等:
kurt <- apply(funds, 2, kurtosis, na.rm = TRUE)
skew <- apply(funds, 2, skewness, na.rm = TRUE)
max <- apply(funds, 2, max, na.rm = TRUE)
min <- apply(funds, 2, min, na.rm = TRUE)
sd <- apply(funds, 2, sd, na.rm = TRUE)
m <- apply(funds, 2, mean, na.rm = TRUE)
然后尝试与观察次数相同但不成功:
obs <- apply(funds, 2, count, na.rm = TRUE)
出现此错误: UseMethod("group_by_") 中的错误:没有适用于 'group_by_' 的方法应用于类“c('double', 'numeric')”的对象
数据集中的前 10 行在此处(资金)。它要长得多,但这应该足以说明问题。如您所见,第一行中有很多 NA。此处的观察数将导致 0,如果查看基金“DK.NORGE”,前 10 行中的观察数将为 10。
structure(c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, -0.0090002245623988, 0.00232763847063611,
0.0666744669374286, 0.0541982646590207, 0.0357777115456177, 0.0112375620619904,
0.0517733147448458, 0.0553272554088993, 0.0964919466161833, -0.183504972082187,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, -0.0132758821474321, 0.0246370824973443,
0.0436835891381346, 0.0356472795497187, 0.000293052003410121,
-0.0158201720510295, 0.0677617514139583, 0.0710647033479483,
0.0996190340976313, -0.26700522906759, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, 0.0609178826615828, 0.0330911715918167,
0.0246199591154059, 0.0387559218497211, -0.0219724959665873,
0.00576292730999128, 0.0607497869923317, 0.0968700634555142,
0.118662582078258, -0.149187455335955, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, -0.00338009126246408,
0.0625741902662371, -0.0197095435684648, 0.0235653235653237,
-0.0205574774344905, 0.0211513478402079, 0.0440504114817319,
0.0713605727123872, 0.122338724009241, -0.193811951737024, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, 0.0182819486204802, 0.052568368712947,
0.0223478709564888, 0.0430931528662419, 0.00418444259680784,
0.0149102804245731, 0.0891504229496138, 0.101929676995524, 0.0713342508037151,
-0.184479046400599, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA), .Dim = c(10L, 108L), .Dimnames = list(
NULL, c("AI.NORS2", "AI.AKSJN", "AB.AKSPR", "AI.AKTIV", "GA.KAPIT",
"GA.GAMB", "BF.HUMAN", "AB.NOPEN", "VL.AKNOR", "AI.NORGS",
"AI.NORG", "BF.NORGE", "AI.NORGI", "AI.VEKST", "AC.NWECA",
"AC.NEQCB", "AC.NWECD", "AC.NWECI", "NR.NORGE", "BF.NORG",
"CA.AKSJE", "CL.AKNOR", "FF.AKFOR", "FF.NOIII", "FF.NOAI2",
"FF.NORGE", "FF.NORII", "FF.VEKST", "DF.NORGE", "DF.VEKST",
"DK.PBNOR", "DK.NORGE", "DK.NORII", "DI.RINV", "DK.NORG3",
"DK.NORIV", "DK.NOIVR", "DK.NSEL1", "DK.NSEL2", "DK.NSEL3",
"DI.RVKST", "DI.SMB", "EK.NORGE", "NF.PLUSS", "FT.GNRTR",
"FT.NOFOK", "FF.BARNE", "FK.AKTI2", "FK.SPAR", "FV.NORGE",
"FV.TRNDR", "GA.OPPKJ", "GF.AKSJE", "GF.INVES", "SU.AKTIV",
"SU.GLNO", "SU.NORGE", "HF.NORGE", "HB.HNORG", "HO.NORGE",
"KF.IPA", "KL.AKSJE", "KL.AKSNO", "IS.NORGE", "IS.UTBYT",
"IS.UTBYI", "NF.AKSJE", "KF.AVKAS", "KF.BARNE", "KF.KAP",
"KF.KAPIT", "KF.KAIII", "KF.NOPLS", "KF.AKPEN", "KF.SMB",
"KF.SMBII", "KF.VEKST", "OD.NORGE", "OD.NORGA", "OD.NORGB",
"OD.NORGD", "OD.NORII", "OR.FIN30", "PO.AKTIV", "FO.AKSJE",
"FO.INDX", "PV.VEKST", "NF.RFAKS", "NF.RFPLU", "AI.SKAFS",
"SE.NORGE", "SK.HORIS", "SK.SMB", "SR.NORGA", "SR.NORGB",
"SP.INNLA", "SP.AKSJS", "SP.NORGE", "SP.NORGA", "SP.STNOP",
"SP.NORGI", "SP.NOINS", "SP.OPTIM", "SP.VEKST", "SP.VERDI",
"SP.STVEN", "TF.NORGE", "OD.VÅRAK")))
任何反馈表示赞赏。谢谢你。
解决方案
count
这里不是正确的功能。要计算每列中非 NA 值的数量,请is.na
使用sum
.
obs <- apply(funds, 2, function(x) sum(!is.na(x)))
但是,更好的选择是colSums
可以将输入作为完整的数据框或矩阵。
colSums(!is.na(funds))
推荐阅读
- swift - Flutter swift 插件创建和显示任意 UIViewController
- flutter - 为什么在计时器停止颤动后音频播放多次?
- javascript - 如何从 JS 中的 http get 方法写入控制台字符串文本
- python-3.x - 仅将“~”分隔文本文件中的 2 列读取到数据框中,并将第二列存储为字符串
- c++ - 对涉及特定类成员的实例集合执行操作
- c++ - 带有返回语句的 C++ 函数中的内联汇编
- django - Djnago 登录级别
- javascript - 刷新我无法控制的跨域网站的 html 框架
- javascript - `td` 的 `getElementsByTagName` 返回 `undefined`
- c# - 在 asp 助手标签中,Model.PropertyName 和只是 PropertyName 有什么区别