我有一个数据帧,我想将其堆叠在R中,以便最终得到三列。下面以当前格式显示一些示例数据。
//CRYPTER CLASS TEST
Crypter crypter = new Crypter();
byte[] encrypted = crypter.encrypt("Hey how are you".getBytes(), crypter.KEYFACTORY_RSA, crypter.CHIPERINSTANCE_RSA_ECB_PKCS1PADDING);
byte[] base64enc = Base64.encodeBase64(encrypted);
System.out.println(new String(base64enc));
System.out.println("");
FileWriterUtil.getOutputStramWriter("F://filecrypt.txt", base64enc);
String readed = FileReaderUtil.getBuffederString("F://filecrypt.txt");
System.out.println(readed);
for (int i = 0; i<encrypted.length; i++){
if(Byte.compare(encrypted[i], Base64.decodeBase64(readed.getBytes())[i]) != 0) {
System.out.println(encrypted[i] + "--" + readed.getBytes()[i]);
}
}
System.out.println(encrypted.length + "--" + Base64.decodeBase64(readed.getBytes()).length);
Crypter decrpter = new Crypter(crypter.publicKey, crypter.privateKey);
byte[] decrypted = decrpter.decrypt(Base64.decodeBase64(readed.getBytes()), crypter.KEYFACTORY_RSA, crypter.CHIPERINSTANCE_RSA_ECB_PKCS1PADDING);
System.out.println(new String(decrypted));
我最终希望将数据框设置为这样的格式,并以三列标题为“ Day”,“ Animal”和“ Count”:
> dput(df)
structure(list(Day = c("d1", "d2", "d3", "d4", "d5", "d6", "d7",
"d8", "d9", "d10"), A1 = c(14L, 24L, 22L, NA, NA, NA, NA, NA,
NA, NA), A2 = c(9L, 15L, 34L, 2L, 12L, 34L, 234L, 34L, NA, NA
), A3 = c(3L, 4L, 19L, 76L, 34L, 34L, 23L, 24L, 37L, 44L), A1.1 = c(34L,
55L, 75L, 12L, 56L, 35L, 3L, 22L, NA, NA)), .Names = c("Day",
"A1", "A2", "A3", "A1.1"), class = "data.frame", row.names = c(NA,
-10L))
> df
Day A1 A2 A3 A1.1
1 d1 14 9 3 34
2 d2 24 15 4 55
3 d3 22 34 19 75
4 d4 NA 2 76 12
5 d5 NA 12 34 56
6 d6 NA 34 34 35
7 d7 NA 234 23 3
8 d8 NA 34 24 22
9 d9 NA NA 37 NA
10 d10 NA NA 44 NA
我知道这应该是一件容易的事,但我确实在努力寻找解决方案。任何帮助将不胜感激。
答案 0 :(得分:4)
使用dplyr
和tidyr
:
library(dplyr)
library(tidyr)
df <- df %>%
gather("animal", "count", -Day)
head(df)
# Day animal count
# 1 d1 A1 14
# 2 d2 A1 24
# 3 d3 A1 22
# 4 d4 A1 NA
# 5 d5 A1 NA
# 6 d6 A1 NA
答案 1 :(得分:1)
您要使用reshape 2软件包also answered here的融合功能将数据帧从宽格式格式化为长格式
library(reshape2)
df <- structure(list(Day = c("d1", "d2", "d3", "d4", "d5", "d6", "d7",
"d8", "d9", "d10"), A1 = c(14L, 24L, 22L, NA, NA, NA, NA, NA,
NA, NA), A2 = c(9L, 15L, 34L, 2L, 12L, 34L, 234L, 34L, NA, NA
), A3 = c(3L, 4L, 19L, 76L, 34L, 34L, 23L, 24L, 37L, 44L)), .Names = c("Day",
"A1", "A2", "A3"), class = "data.frame", row.names = c(NA, -10L
))
long_format <- melt(df)
colnames(long_format)[2:3] <- c("Animal","Count")
答案 2 :(得分:0)
可以通过基本R函数using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication78
{
class Program
{
static void Main(string[] args)
{
string ident = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><note></note>";
XDocument doc = XDocument.Parse(ident);
XElement note = doc.Root;
note.Add(new XElement("to", "Tove"),
new XElement("example", new object[] {
new XElement("from", new object[] {
"Jani", new XElement("heading", "Reminder")
}),
new XElement("body","Don't forget me this weekend!")
})
);
}
}
}
完成:
melt