📜  如何反转R中数据帧的顺序?

📅  最后修改于: 2022-05-13 01:55:06.747000             🧑  作者: Mango

如何反转R中数据帧的顺序?

数据帧的顺序反转涉及以这种方式交换行或列,即从后访问元素。在本文中,我们将讨论按列和按行反转数据帧顺序的各种方法。

反转列的顺序

方法一:使用rev方法

R 中的 rev() 方法用于返回 R 对象的相反顺序,无论是数据帧还是向量。它默认计算反向列。结果数据帧首先返回最后一列,然后是前一列。行的顺序保持不变。结果必须存储在新变量中以保留修改。

句法:

其中 df 是数据框。

例子:

R
# declaring a dataframe in R
data_frame <- data.frame(col1 = c(1:4), 
                         col2 = letters[1:4],
                         col3 = c(8:11))
  
print ("Original DataDrame")
print (data_frame)
  
# calculating reverse of dataframe
rev_data_frame <- rev(data_frame)
  
print ("Modified DataDrame")
print (rev_data_frame)


R
# declaring a dataframe in R
data_frame <- data.frame(col1 = c(1:4), 
                         col2 = letters[1:4],
                         col3 = c(8:11))
  
print ("Original DataDrame")
print (data_frame)
  
# computing reverse
rev_data_frame <- data_frame[,ncol(data_frame):1 ] 
  
print ("Modified DataDrame")
print (rev_data_frame)


R
# declaring a dataframe in R
data_frame <- data.frame(col1 = c(1:4), 
                         col2 = letters[1:4],
                         col3 = c(8:11))
  
print ("Original DataDrame")
print (data_frame)
  
# transpose of dataframe 
transpose <- t(data_frame)
  
# converting the result to dataframe
transpose <- as.data.frame(transpose)
  
# calculating reverse of dataframe
rev_data_frame <- rev(transpose)
  
# transpose of reverse dataframe 
rev_data_frame <- t(rev_data_frame)
  
# converting the result to dataframe
rev_data_frame <- as.data.frame(rev_data_frame)
  
print ("Modified DataDrame")
print (rev_data_frame)


R
# declaring a dataframe in R
data_frame <- data.frame(col1 = c(1:4), 
                         col2 = letters[1:4],
                         col3 = c(8:11))
  
print ("Original DataDrame")
print (data_frame)
  
# calculating reverse
rev_data_frame <- apply(data_frame, 2, rev)
  
# converting the result to dataframe
rev_data_frame <- as.data.frame(rev_data_frame)
  
print ("Modified DataDrame")
print (rev_data_frame)


输出

[1] "Original DataDrame"
 col1 col2 col3
1    1    a    8
2    2    b    9
3    3    c   10
4    4    d   11
[1] "Modified DataDrame"
 col3 col2 col1
1    8    a    1
2    9    b    2
3   10    c    3
4   11    d    4

方法二:使用ncol方法

R 中的 ncol() 方法用于返回指定数据帧的列数。从最后一列索引到第一列索引范围访问数据框,即 1。

例子:

电阻



# declaring a dataframe in R
data_frame <- data.frame(col1 = c(1:4), 
                         col2 = letters[1:4],
                         col3 = c(8:11))
  
print ("Original DataDrame")
print (data_frame)
  
# computing reverse
rev_data_frame <- data_frame[,ncol(data_frame):1 ] 
  
print ("Modified DataDrame")
print (rev_data_frame)

输出

[1] "Original DataDrame"
col1 col2 col3
1    1    a    8
2    2    b    9
3    3    c   10
4    4    d   11
[1] "Modified DataDrame"
col3 col2 col1
1    8    a    1
2    9    b    2
3   10    c    3
4   11    d    4

颠倒行的顺序

方法 1:使用转置和 rev 方法

rev() 方法根据列颠倒矩阵的顺序。这里的想法是针对转置矩阵的转置等效于原始矩阵的基本概念的方法。

句法:

其中 M 是矩阵或数据框。

对数据帧进行转置,这会交换数据帧的行和列的顺序。现在,行变成了列,列分别变成了行。使用 as.data.frame() 方法将得到的转置矩阵转换为数据帧。 rev() 方法应用于此转置数据帧。这会颠倒数据框中行的顺序。反转的数据帧需要再次转置才能正确显示数据帧。因此,数据帧返回到原始格式。然后使用 as.data.frame() 将此输出显式转换为数据帧。

例子:

电阻

# declaring a dataframe in R
data_frame <- data.frame(col1 = c(1:4), 
                         col2 = letters[1:4],
                         col3 = c(8:11))
  
print ("Original DataDrame")
print (data_frame)
  
# transpose of dataframe 
transpose <- t(data_frame)
  
# converting the result to dataframe
transpose <- as.data.frame(transpose)
  
# calculating reverse of dataframe
rev_data_frame <- rev(transpose)
  
# transpose of reverse dataframe 
rev_data_frame <- t(rev_data_frame)
  
# converting the result to dataframe
rev_data_frame <- as.data.frame(rev_data_frame)
  
print ("Modified DataDrame")
print (rev_data_frame)

输出



[1] "Original DataDrame"
 col1 col2 col3
1    1    a    8
2    2    b    9
3    3    c   10
4    4    d   11
[1] "Modified DataDrame"
  col1 col2 col3
V4    4    d   11
V3    3    c   10
V2    2    b    9
V1    1    a    8

方法二:使用apply方法

R 中的 apply() 方法用于在 R 对象、向量、数据框或矩阵上应用指定的函数。此方法返回通过将函数应用于数组或矩阵的对应项而获得的向量或数组或值列表。

在这种方法中,rev函数计算跨行轴的数据帧的反向。

例子:

电阻

# declaring a dataframe in R
data_frame <- data.frame(col1 = c(1:4), 
                         col2 = letters[1:4],
                         col3 = c(8:11))
  
print ("Original DataDrame")
print (data_frame)
  
# calculating reverse
rev_data_frame <- apply(data_frame, 2, rev)
  
# converting the result to dataframe
rev_data_frame <- as.data.frame(rev_data_frame)
  
print ("Modified DataDrame")
print (rev_data_frame)

输出

[1] "Original DataDrame"
 col1 col2 col3
1    1    a    8
2    2    b    9
3    3    c   10
4    4    d   11
[1] "Modified DataDrame"
 col1 col2 col3
1    4    d   11
2    3    c   10
3    2    b    9
4    1    a    8