Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中对齐等效观测_R_Excel - Fatal编程技术网

在R中对齐等效观测

在R中对齐等效观测,r,excel,R,Excel,我是R的新手。我在论坛上寻找回复,但没有成功 我需要对齐来自两个不同列的值。 例如,我有: 教育工资 e a j e a j a 我需要: 教育工资 a a j j e 知道我必须在一个大数据集上这样做,并且我在“教育”列和“工资”列中有不同数量的值。 我要感谢Stackoverflow社区,如果我的问题已经被问到,我再次感到非常抱歉。如果我正确理解您的问题,请尝试修改此代码: df_ord<-data.frame(cbind(Educ=as.character(df[order(df$E

我是R的新手。我在论坛上寻找回复,但没有成功 我需要对齐来自两个不同列的值。 例如,我有:

教育工资 e a j e a j a

我需要:

教育工资 a a j j e

知道我必须在一个大数据集上这样做,并且我在“教育”列和“工资”列中有不同数量的值。


我要感谢Stackoverflow社区,如果我的问题已经被问到,我再次感到非常抱歉。

如果我正确理解您的问题,请尝试修改此代码:

df_ord<-data.frame(cbind(Educ=as.character(df[order(df$Educ),"Educ"]),Wage=as.character(df[order(df$Wage),"Wage"])))
df_ord
  Educ Wage
1    a    a
2    a    a
3    e    e
4    j    j

df_ord如果您的列包含完全相同但顺序不同的数据:

df <- data.frame(Educ = c("a","a","e","j"), Wage = c("e","j","a","a"), stringsAsFactors = F )
df$Educ <- sort(df$Educ)
df$Wage <- sort(df$Wage)

df检查这个:您的问题没有得到充分的定义。如果两列的值与您的示例中的值完全相同,您只需复制一列就可以了。@ygaft我已经看过这篇文章了。问题是,这适用于多个数据集,但我使用的是单个数据集。@Roland,我需要一个代码来自动对齐两个不同列中相同的值。或者你可能知道excel的一个诀窍。我认为我的问题很小。按照@Roland的观点,如果列具有不同的数据,例如
data.frame(x=c(1,2,1),y=c(3,1,2))
,您希望发生什么?谢谢您的回答。我刚刚编辑了我的帖子:我在两列中的观察次数不同。好的,但是你想要什么样的结果?请在两列中提供一个不同值的示例,谢谢您的回复。我刚刚编辑了我的帖子:我在两栏中的观察次数不同。嘿@J.Perez。因为数据帧中的列总是具有相同的长度,所以有向量吗?或者您的列是否包含NA?如果左列与右列不匹配,我希望能够放置NAs。目前,我只有两列不同长度的数据,其中包含NA。
df <- data.frame(Educ = c("a","a","e","j"), Wage = c("e","j","a","a"), stringsAsFactors = F )
df$Educ <- sort(df$Educ)
df$Wage <- sort(df$Wage)
require(data.table)

dt.left <- data.table(x = c("a","z","a","b","c","d","b","c"))
dt.rght <- data.table(x = c("a","e","c","b","f"))

dt.left[ , dum := paste0(x,1:.N), by = "x"]
dt.rght[ , dum := paste0(x,1:.N), by = "x"]

merge(dt.left,dt.rght,by = "dum", all = T)