我有一个包含十列的数据框:
A B C 1 1 1 1 1 1 1
B M J 2 1 2 2 2 2 2
J K Z 3 3 3 3 3 3 3.1
V N I 4 4 4 4 4 4 4
Run Code Online (Sandbox Code Playgroud)
我想从4到10列中排除那些具有相同值的行.我找到了比较不同行的解决方案,但在这里我说的是在1行内.所以输出是
B M J 2 1 2 2 2 2 2
J K Z 3 3 3 3 3 3 3.1
Run Code Online (Sandbox Code Playgroud)
因为第1行和最后一行在第4列到第10列中具有相同的值.我可以通过将每个值1比1来比较,但我的数据帧非常大(~100,000行).
我要做这样的事情:
my ($sec,$min,$hour,$day,$mon,$year,$wday,$yday,$isdst) = localtime(time);
Run Code Online (Sandbox Code Playgroud)
但我不需要所有这些变量(只需要$ min,$ hour,$ mon,$ year).
是否有一个简单的解决方案只在perl中声明必填字段?
对我来说一个简单的解决方案就是这个,但它不是真正的"性感":
my @day = localtime(time);
my $min = $day[1];
my $hour = $day[2];
my $day = $day[3];
...
Run Code Online (Sandbox Code Playgroud)
提前感谢任何能够给我一些想法的人:)
我有一个包含 99 行的两列数据框,我已“按升序排序”,但现在我只想根据第二列保留数据框的第一行和最后十行(1:10、90:99) (“改变”)。
例如
ID_NUM Change
1 -55223
42 -2321
6 -201
20 17
99 93
53 1009
Run Code Online (Sandbox Code Playgroud)
...ETC。
如何创建一个新的数据框,从现有数据框中排除中间的 11:89 行?
我试图证明 L= {a^ib^ic^i : i >= 1} 的补集是上下文无关的。L 补码是:{w 是 {a,b,c}* 上的一个词*:w 不在 L 中}。
众所周知,上下文无关语言在联合下是封闭的。因此,我试图将我的语言({a^ib^ic^i} 的补集)划分为上下文无关的子集,其中它们的联合必须是上下文无关的。谁能帮我找到子集?每次我尝试这样做,最终都会得到 L*!
谢谢。
我想按某些列和子集订购多列数据框,但使用的命令不起作用
print(df[order(df$x) & df$x < 5,])
Run Code Online (Sandbox Code Playgroud)
这不会对结果进行排序。
为了调试它,我生成了一个带有 1 列的测试数据框,但是这种“简化”产生了意想不到的效果
df <- data.frame(x = sample(1:50))
print(df[order(df$x) & df$x < 5,])
Run Code Online (Sandbox Code Playgroud)
这不会对结果进行排序,所以我觉得我已经重现了问题,但使用了更简单的数据。
将过程分解为先排序然后子集让我发现这种情况下的排序不会生成数据帧对象
df <- data.frame(x = sample(1:50))
ndf <- df[order(df$x),]
print(class(ndf))
Run Code Online (Sandbox Code Playgroud)
产生
[1] "integer"
Run Code Online (Sandbox Code Playgroud)
尝试使用数据帧语法对结果“整数”ndf 对象进行子集化,例如
print(ndf[ndf$x < 5, ])
Run Code Online (Sandbox Code Playgroud)
显然会产生一个错误:
Error in ndf$x : $ operator is invalid for atomic vectors.
Run Code Online (Sandbox Code Playgroud)
进一步简化,我发现单独的子集化(不应用 order 函数)不会生成数据帧对象
ndf <- df[df$x < 5,]
class(ndf)
[1] "integer"
Run Code Online (Sandbox Code Playgroud)
事实证明,分离排序和子集的多列数据框确实按预期工作
df <- data.frame(x = sample(1:50), y = rnorm(50))
ndf <- df[order(df$x),]
print(ndf[ndf$x < 5, ])
Run Code Online (Sandbox Code Playgroud)
这解决了我原来的问题,但又引出了两个问题: …
我正在下载我的数据,并且我得到以下代码的不同结果:
subset(df, x==1)
df[df$x==1,]
Run Code Online (Sandbox Code Playgroud)
x的类型是 integer
难道我做错了什么?先感谢您
我制作了名为 x 的数据框:
a b
1 2
3 NA
3 32
21 7
12 8
Run Code Online (Sandbox Code Playgroud)
当我跑步时
y <- x["a">2,]
Run Code Online (Sandbox Code Playgroud)
返回的对象 y 与 x 相同。如果我跑
y <- x["a" == 1,]
Run Code Online (Sandbox Code Playgroud)
y 是一个空框架。
我确保 x 数据框的名称没有空格(我自己用 names() 命名它们),并且 a 和 是数字。
PS:如果我尝试
y <- x["a">2]
Run Code Online (Sandbox Code Playgroud)
y 也返回为与 x 相同。
我知道如何从法向量中提取子集,以及如何从另一个向量内的向量中提取子集。我现在的问题是如何提取另一个向量内的所有向量的子集。
例如:我在另一个向量中有三个向量:
std::vector<std::vector<int>> my_vec;
std::vector<int> vec_1{1,2,3,4,5};
std::vector<int> vec_2{11,12,13,14,15};
std::vector<int> vec_3{21,22,23,24,25};
my_vec.push_back(vec_1);
my_vec.push_back(vec_2);
my_vec.push_back(vec_3);
Run Code Online (Sandbox Code Playgroud)
我现在想做的是创建一个新向量,其中包含每个向量的第三个和第四个元素的子集。我试过这个:
#include<vector>
#include <iostream>
int main()
{
std::vector<std::vector<int>> my_vec;
std::vector<int> vec_1{1,2,3,4,5};
std::vector<int> vec_2{11,12,13,14,15};
std::vector<int> vec_3{21,22,23,24,25};
my_vec.push_back(vec_1);
my_vec.push_back(vec_2);
my_vec.push_back(vec_3);
// For a normal vector
std::vector<int> vec_1_subset(vec_1.begin()+2,vec_1.begin()+4);
for (auto& element: vec_1_subset)
{
std::cout<<element<<std::endl;
}
// For extracting from a single vector inside another vector
std::vector<int> my_vec_subset((my_vec[0]).begin()+2,(my_vec[0]).begin()+4);
for (auto& element: my_vec_subset)
{
std::cout<<element<<std::endl;
}
// For several vectors inside a vector ?
std::vector<std::vector<int>> my_vec_test_subset(my_vec.begin()+2,my_vec.begin()+4);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
最后一次尝试创建一条错误消息。
我有以下代码,并且想将列选择到新的data.frame.
library(dplyr)
df = data.frame(
Manhattan=c(1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0),
Brooklyn=c(0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0),
The_Bronx=c(1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0),
Staten_Island=c(0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, …Run Code Online (Sandbox Code Playgroud) 我有以下数据框,我只需要过滤那些每组(id)同时具有“摄入”和“排出”的行。结果应该是这样的:
> df <- tibble(id = c(1, 1, 2, 3, 3, 4, 4, 5, 6, 7, 7),
+ type = c("intake", "discharge", "intake", "intake", "discharge",
+ "intake", "discharge", "intake", "intake", "intake", "discharge"))
> df
id type
<dbl> <chr>
1 1 intake
2 1 discharge
3 2 intake
4 3 intake
5 3 discharge
6 4 intake
7 4 discharge
8 5 intake
9 6 intake
10 7 intake
11 7 discharge
Run Code Online (Sandbox Code Playgroud)
对此:
id type
<dbl> <chr>
1 1 intake
2 …Run Code Online (Sandbox Code Playgroud)