我想知道做一个简单功能的最简单方法,其目的是:
我提供了一个示例代码,其中main
是主要数据,int main(int argc, char** argv)
{
u_char data[] = {
0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x11, 0xf, 0xf, 0xf, 0xf, 0xf, 0x10, 0xf, 0xf,
0xf, 0xf, 0xe, 0x10, 0x10, 0xf, 0x10, 0xf, 0xf, 0x10, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x10, 0x10, 0xf,
0x10, 0xf, 0xe, 0xf, 0xf, 0x10, 0xf, 0xf, 0x10, 0xf, 0xf, 0xf, 0xf, 0x10, 0xf, 0xf, 0xf, 0xf, 0xf,
0xf, 0xf, 0xf, 0x10, 0xf, 0xf, 0xf, 0x10, 0xf, 0xf, 0xf, 0xf, 0xe, 0xf, 0xf, 0xf, 0xf, 0xf, 0x10,
0x10, 0xf, 0xf, 0xf, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2,
0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2,
0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2,
0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2,
0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xd3, 0xd1, 0xca, 0xc6, 0xd2, 0xd2, 0xcc, 0xc8, 0xc2, 0xd0, 0xd0,
0xca, 0xc9, 0xcb, 0xc7, 0xc3, 0xc7, 0xca, 0xce, 0xca, 0xc9, 0xc2, 0xc8, 0xc2, 0xbe, 0xc2, 0xc0, 0xb8, 0xc4, 0xbd,
0xc5, 0xc9, 0xbc, 0xbf, 0xbc, 0xb5, 0xb6, 0xc1, 0xbe, 0xb7, 0xb9, 0xc8, 0xb9, 0xb2, 0xb2, 0xba, 0xb4, 0xb4, 0xb7,
0xad, 0xb2, 0xb6, 0xab, 0xb7, 0xaf, 0xa7, 0xa8, 0xa5, 0xaa, 0xb0, 0xa3, 0xae, 0xa9, 0xa0, 0xa6, 0xa5, 0xa8, 0x9f,
0xa0, 0x9e, 0x94, 0x9f, 0xa3, 0x9d, 0x9f, 0x9c, 0x9e, 0x99, 0x9a, 0x97, 0x4, 0x5, 0x4, 0x5, 0x4, 0x4, 0x5,
0x5, 0x5, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x4, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5,
0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5,
0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x4, 0x4, 0x5, 0x5, 0x5, 0x4, 0x4,
0x5, 0x5, 0x5, 0x5, 0x4, 0x5, 0x5, 0x4, 0x4, 0x6, 0x4, 0x4, 0x6, 0x5, 0x4, 0x5, 0xf0, 0xf0, 0xf0,
0xf0, 0xf0, 0xf0, 0xe0, 0xf0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
0xf0, 0xf0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
0xf0
};
size_t cols = 80;
// Normal
std::cout << "Computing with normal way" << std::endl;
std::vector<double> info;
double tstart_normal = timestamp();
getData(data, cols, info);
double time_normal = timestamp() - tstart_normal;
// AVX2
std::cout << "Computing with avx" << std::endl;
std::vector<double> info_avx2;
double tstart_avx2 = timestamp();
getDataAVX2(data, cols, info_avx2);
double time_avx2 = timestamp() - tstart_avx2;
// Display difference
std::cout << "Time normal: " << time_normal << " s" << std::endl;
std::cout << "Time AVX2: " << time_avx2 << " s" << std::endl;
std::cout << "Time improvement AVX2: " << time_normal / time_avx2 << std::endl;
// Write to file
std::ofstream file;
file.open("out.csv");
for (size_t i = 0; i < cols; i++)
{
file << info[size_t(i)] << "," << info_avx2[size_t(i)];
file << std::endl;
}
file.close();
// Exit
return 0;
}
中的Age *必须添加到maindata
中,同时仅过滤ID中存在的ID *子数据具有ID,名称和年龄的数据框。最后的数据帧命名为subdata
示例代码:
maindata
*示例中的标题名称
答案 0 :(得分:0)
您可以基于inner_join
在两个数据集之间进行ID
library(dplyr)
inner_join(maindata, subdata)
Joining, by = "ID"
ID Name Age
1 1 a 26
2 2 b 55
3 3 c 34
4 6 f 33
5 7 g 21