有没有办法选择多列数据帧的pmax/pmin?
我只想要返回最大值或最小值,而不是整行.
max <- tail(df, n=1)
max
# v1 v2 v3 v4 v5 v6 v7 v8
#2014-10-03 17:35:00 58.91 45.81 33.06 70.76 36.39 45.53 33.52 34.36
pmax(max)
# v1 v2 v3 v4 v5 v6 v7 v8
#2014-10-03 17:35:00 58.91 45.81 33.06 70.76 36.39 45.53 33.52 34.36
Run Code Online (Sandbox Code Playgroud)
对于这一行,我期望返回值为:
70.76
Run Code Online (Sandbox Code Playgroud)
...因为它是所有列的最大值.
我有一个数据帧,由一个具有不断变化的列数的for循环创建.
在另一个函数中,我希望删除最后五列.
具有数据帧长度的变量是"单位",其数字在10和150之间.
我已经尝试使用列的名称,但它不起作用.(一旦我尝试打开"newframe"R工作室崩溃,查看myframe就没问题).
drops <- c("name1","name2","name3","name4","name5")
newframe <- results[,!(names(myframe) %in% drops)]
Run Code Online (Sandbox Code Playgroud)
有没有办法只删除数据帧的最后五列而不依赖于列的名称或数字
我想知道在使用dist()和as.matrix()时是否有一个特定的参数输出一个包含所有行名的表.这就是我的意思:
first=c('john', 'judy', 'jenny')
second=c(3,6,9)
third = c(2,4,6)
df = data.frame(first,second,third)
Run Code Online (Sandbox Code Playgroud)
我有这个名为df的数据框:
first second third
1 john 3 2
2 judy 6 4
3 jenny 9 6
Run Code Online (Sandbox Code Playgroud)
这是我想要的输出:
john judy jenny
john 0.000000 4.41588 8.831761
judy 4.415880 0.00000 4.415880
jenny 8.831761 4.41588 0.000000
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
df.dist=dist(df)
df.dist=as.matrix(df.dist, labels=TRUE)
df.dist
Run Code Online (Sandbox Code Playgroud)
这就是R给我的东西:
1 2 3
1 0.000000 4.41588 8.831761
2 4.415880 0.00000 4.415880
3 8.831761 4.41588 0.000000
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一个特定的函数或参数在比较不同的条目时重命名列,或者我们是否只需要自己编写代码?
我输入的另一件事是?as.matrix是有一个名为dimnames的参数,可以让你输入cols和rows的名字列表.但我不知道这是不是一个好主意,因为我的数据集有大约100多个条目.
非常感谢任何帮助.被困了一会儿.
我有以下数据框:
a <- c(1,1,4)
b <- c(1,0,2)
c <- data.frame(a=a,b=b)
str(c)
# a b
#1 1 1
#2 1 0
#3 4 2
Run Code Online (Sandbox Code Playgroud)
我想按以下方式聚合数据框 c:
aggregate(b~a,FUN=mean,data=c)
# a b
#1 1 0.5
#2 4 2.0
Run Code Online (Sandbox Code Playgroud)
但是,我的主要问题是我将使用变量作为列的名称
所以:
d <- 'a'
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用包含列名称的变量 d 进行聚合,显然会收到错误:
aggregate(b~d,FUN=mean,data=c)
#Error in model.frame.default(formula = b ~ d, data = c) : variable lengths differ (found for 'd')
Run Code Online (Sandbox Code Playgroud)
这可行,但我随后得到了愚蠢的列名称。我想避免重命名列的额外步骤:
aggregate(c[,'b']~c[,d],FUN=mean,data=c)
# c[, d] c[, "b"]
#1 1 0.5
#2 4 2.0
Run Code Online (Sandbox Code Playgroud)
如何聚合并在第一次尝试时获得正确的列名称?(也许没有办法做到这一点)
鉴于以下内容:
#if __cplusplus >= 201703L
#include <variant>
using std::variant;
#else
#include <boost/variant.hpp>
using boost::variant;
#endif
Run Code Online (Sandbox Code Playgroud)
考虑一下这个片段.这可以在c ++ 17 std::variant<>和boost::variant<>.
struct B
{
B() = default;
B(const B&) = delete;
B(B&&) {}
B& operator=(const B&&) = delete;
B& operator=(B&&) {}
};
int main()
{
variant<B, int> v;
v = B{};
}
Run Code Online (Sandbox Code Playgroud)
但是,这个其他示例仅使用C++ 17编译std::variant<>,因为boost::variant<>尝试执行复制分配.
struct A
{
A(int) {}
};
struct B
{
B(int) {}
B(const B&) = delete;
B(B&&) {}
B& operator=(const B&) = …Run Code Online (Sandbox Code Playgroud) 我在R中有一个数据框,其中一列是gender。的值gender是带有“ f”或“ m”的因子,尽管如果数据集不好,则可能会更大(例如NA)。
我正在尝试将数据框分成性别唯一的数据框列表。这样,我可以在不同的人群上运行相同的模型。
有没有一种更好的方法呢?
dfMale <- mydata[which(mydata$gender == "m"),]
dfFemale <- mdata[which(mydata$gender == "f"),]
dfOther <- mydata[!(1:dim(mydata][1] %in% c(which(mydata$gender == "m"),which(mydata$gender == "f"))]
Run Code Online (Sandbox Code Playgroud)
谢谢。
我有一个包含四个数据帧的列表.每个数据帧都有相同的第一列person.id(每个数据帧的唯一键)我想填充零.
问题:
代码运行但输出到控制台,不会更改列表中的实际数据帧.
示例数据:
df1 <- data.frame(person.id = 3200:3214, letter = letters[1:15])
df2 <- data.frame(person.id = 4100:4114, letter = letters[8:22])
df3 <- data.frame(person.id = 4300:4314, letter = letters[10:24])
df4 <- data.frame(person.id = 5500:5514, letter = letters[5:19])
dataList <- list(df1, df2, df3, df4)
lapply(dataList, function(i){
i$person.id <- str_pad(i$person.id, 6, pad = "0")
})
# Console output pads the zeros (not expected):
[[1]]
[1] "003200" "003201" "003202" "003203" "003204" "003205" "003206" "003207" "003208"
[10] "003209" "003210" "003211" "003212" "003213" "003214"
# Data …Run Code Online (Sandbox Code Playgroud) 以下代码无法在Linux上使用GCC 7.2.0和Clang 5.0.0进行编译.
#include <iostream>
struct A
{
void f()
{
std::cout << "Hello, world!\n";
}
};
struct B : private A
{
using A::f;
};
int main()
{
B b;
void (B::*f)() = &B::f; // Error: 'A' is an inaccessible base of 'B'
(b.*f)();
}
Run Code Online (Sandbox Code Playgroud)
这是否符合标准?公共使用声明是否应该B允许B::f透明地使用成员函数指针,而不是A::f在B透视之外涉及可访问性?
我无法在R中执行简单的矩阵算术,这令人感到困惑。这真的不可能吗?我想采用1个数据框中的值,并将其子跟踪到另一个数据框中的所有列。看起来像这样应该很容易,但是我什么也没找到,尽管有一个“心理”程序包可以作为功能,但不能给出预期的结果。似乎也没有必要。有小费吗。非常感激。
> NROW(arData1[c(gsub(" ", ".",portfolio1), "benchmark")])
[1] 51
> NCOL(arData1[c(gsub(" ", ".",portfolio1), "benchmark")])
[1] 4
> NROW(arData1[gsub(" ", ".", treasuries)])
[1] 51
> NCOL(arData1[gsub(" ", ".", treasuries)])
[1] 1
ExRet1 <- arData1[c(gsub(" ", ".",portfolio1), "benchmark")] - arData1[gsub(" ", ".", treasuries)]
Error in Ops.data.frame(arData1[c(gsub(" ", ".", portfolio1), "benchmark")], :
- only defined for equally-sized data frames
Run Code Online (Sandbox Code Playgroud) 假设我有许多数据框,其中包含几乎相似列的不同名称.如何使用循环(或任何其他方式)操纵各个数据框的列?例如,我想一次删除所有数据帧的第一列.